2006-11-16 02:47:56

by Chris Wright

[permalink] [raw]
Subject: [patch 14/30] NET: __alloc_pages() failures reported due to fragmentation

-stable review patch. If anyone has any objections, please let us know.
------------------

From: David Miller <[email protected]>

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 <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Chris Wright <[email protected]>
---

---
net/core/sock.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-2.6.18.2.orig/net/core/sock.c
+++ linux-2.6.18.2/net/core/sock.c
@@ -1164,7 +1164,7 @@ static struct sk_buff *sock_alloc_send_p
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;

--