summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Grimm <jgrimm@touki.austin.ibm.com>2002-09-30 00:19:45 -0700
committerDavid S. Miller <davem@nuts.ninka.net>2002-09-30 00:19:45 -0700
commit184411aab120468c49112bd11fdd67bed3806918 (patch)
tree2dd8a0e8b6528a2d0ac0f1434dc6a71b5624d1d8
parent4e87a098903d4de48f6b43f6a5d52c59b3bbeb6e (diff)
sctp: Fix GFP_KERNEL allocation with lock held.
-rw-r--r--net/sctp/protocol.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c
index a502583919d2..791f773b4a39 100644
--- a/net/sctp/protocol.c
+++ b/net/sctp/protocol.c
@@ -119,8 +119,7 @@ static inline void sctp_v4_get_local_addr_list(sctp_protocol_t *proto,
for (ifa = in_dev->ifa_list; ifa; ifa = ifa->ifa_next) {
/* Add the address to the local list. */
- /* XXX BUG: sleeping allocation with lock held -DaveM */
- addr = t_new(struct sockaddr_storage_list, GFP_KERNEL);
+ addr = t_new(struct sockaddr_storage_list, GFP_ATOMIC);
if (addr) {
INIT_LIST_HEAD(&addr->list);
addr->a.v4.sin_family = AF_INET;
@@ -157,8 +156,7 @@ static inline void sctp_v6_get_local_addr_list(sctp_protocol_t *proto,
read_lock_bh(&in6_dev->lock);
for (ifp = in6_dev->addr_list; ifp; ifp = ifp->if_next) {
/* Add the address to the local list. */
- /* XXX BUG: sleeping allocation with lock held -DaveM */
- addr = t_new(struct sockaddr_storage_list, GFP_KERNEL);
+ addr = t_new(struct sockaddr_storage_list, GFP_ATOMIC);
if (addr) {
addr->a.v6.sin6_family = AF_INET6;
addr->a.v6.sin6_port = 0;