From: David Miller Date: Mon, 6 Nov 2006 23:07:16 +0000 (-0800) Subject: [PATCH] NET: __alloc_pages() failures reported due to fragmentation X-Git-Tag: v2.6.18.3~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=90be3aa1886f6c18b99aacf6c682cf6c3493d385;p=thirdparty%2Fkernel%2Fstable.git [PATCH] 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 Signed-off-by: David S. Miller Signed-off-by: Chris Wright --- diff --git a/net/core/sock.c b/net/core/sock.c index 51fcfbc041a73..e7ecdf22f130b 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -1164,7 +1164,7 @@ static struct sk_buff *sock_alloc_send_pskb(struct sock *sk, goto failure; if (atomic_read(&sk->sk_wmem_alloc) < sk->sk_sndbuf) { - skb = alloc_skb(header_len, sk->sk_allocation); + skb = alloc_skb(header_len, gfp_mask); if (skb) { int npages; int i;