diff options
author | Larry Woodman <lwoodman@redhat.com> | 2006-11-03 19:05:45 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-11-05 17:11:32 -0500 |
commit | db38c179a759a9c4722525e8c9f09ac80e372377 (patch) | |
tree | 92edcdcec2fea73cd449a00e6e000ad5e53fec7b /net | |
parent | 0f37c6057414fb68024793966b1dcb6a135cb844 (diff) |
[NET]: __alloc_pages() failures reported due to fragmentation
We have seen a couple of __alloc_pages() failures due to
fragmentation, there is plenty of free memory but no large order pages
available. I think the problem is in sock_alloc_send_pskb(), the
gfp_mask includes __GFP_REPEAT but its never used/passed to the page
allocator. Shouldnt the gfp_mask be passed to alloc_skb() ?
Signed-off-by: Larry Woodman <lwoodman@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/core/sock.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/core/sock.c b/net/core/sock.c index d472db4776c3..ee6cd2541d35 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
@@ -1160,7 +1160,7 @@ static struct sk_buff *sock_alloc_send_pskb(struct sock *sk, | |||
1160 | goto failure; | 1160 | goto failure; |
1161 | 1161 | ||
1162 | if (atomic_read(&sk->sk_wmem_alloc) < sk->sk_sndbuf) { | 1162 | if (atomic_read(&sk->sk_wmem_alloc) < sk->sk_sndbuf) { |
1163 | skb = alloc_skb(header_len, sk->sk_allocation); | 1163 | skb = alloc_skb(header_len, gfp_mask); |
1164 | if (skb) { | 1164 | if (skb) { |
1165 | int npages; | 1165 | int npages; |
1166 | int i; | 1166 | int i; |