Subject: [RFC/PATCH 1/3] UDP memory usage accounting (take 2): fix send buffer check

From: Satoshi OSHIMA <[email-masked]>
Date: Fri, 28 Sep 2007 22:37:54 +0900

This patch introduces sndbuf size check before

memory allcation for send buffer.

signed-off-by: Satoshi Oshima <[email-masked]>

signed-off-by: Hideo Aoki <[email-masked]>

Index: 2.6.23-rc7-udp_limit/net/ipv4/ip_output.c

===================================================================

--- 2.6.23-rc7-udp_limit.orig/net/ipv4/ip_output.c

+++ 2.6.23-rc7-udp_limit/net/ipv4/ip_output.c

@@ -1004,6 +1004,11 @@ alloc_new_skb:

                     frag = &skb_shinfo(skb)->frags[i];

                 }

             } else if (i < MAX_SKB_FRAGS) {

+                if (atomic_read(&sk->sk_wmem_alloc) + PAGE_SIZE

+                    > 2 * sk->sk_sndbuf) {

+                    err = -ENOBUFS;

+                    goto error;

+                }

                 if (copy > PAGE_SIZE)

                     copy = PAGE_SIZE;

                 page = alloc_pages(sk->sk_allocation, 0);