From: Hideo AOKI <haoki@redhat.com>
To: David Miller <davem@davemloft.net>
Cc: herbert@gondor.apana.org.au, netdev@vger.kernel.org,
tyasui@redhat.com, mhiramat@redhat.com,
satoshi.oshima.fk@hitachi.com, billfink@mindspring.com,
andi@firstfloor.org, johnpol@2ka.mipt.ru,
shemminger@linux-foundation.org, yoshfuji@linux-ipv6.org,
yumiko.sugita.yf@hitachi.com, haoki@redhat.com
Subject: Re: [PATCH 1/4] [UDP]: fix send buffer check
Date: Thu, 20 Dec 2007 22:43:17 -0500 [thread overview]
Message-ID: <476B3655.4000508@redhat.com> (raw)
In-Reply-To: <20071220.033138.157714241.davem@davemloft.net>
Hello,
David Miller wrote:
>> diff -pruN net-2.6/net/ipv4/ip_output.c net-2.6-udp-take11a1-p1/net/ipv4/ip_output.c
>> --- net-2.6/net/ipv4/ip_output.c 2007-12-11 10:54:55.000000000 -0500
>> +++ net-2.6-udp-take11a1-p1/net/ipv4/ip_output.c 2007-12-17 14:42:31.000000000 -0500
>> @@ -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);
>
> If we are going to do this, we need to add the same check to
> skb_append_datato_frags() which is invoked via ip_ufo_append_data().
>
> We also have to be very careful in this area. One problem we had a
> long time ago was that we would socket account when fragmenting an
> outgoing frame. This was bogus because even if the socket had enough
> space for one full sized frame, the packet send would fail because it
> could not fit the space for both the original frame and the
> fragmented copy of it.
>
> This situation was cured by simply not enforcing accounting for the
> fragmented copy. It is valid because after we fragment, we keep
> the fragmented copy but free the original.
>
> This doesn't apply directly to this specific patch, but it is
> something to keep in mind when doing these changes.
Hello,
Thank you for sharing your experience.
Let me investigate this code and skb_append_datato_frags().
I'll include the check code in next patch set if it is really needed.
Regards,
Hideo
--
Hitachi Computer Products (America) Inc.
next prev parent reply other threads:[~2007-12-21 3:48 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-12-18 2:33 [PATCH 0/4] [UDP]: memory accounting and limitation (take 11) Hideo AOKI
2007-12-18 2:38 ` [PATCH 1/4] [UDP]: fix send buffer check Hideo AOKI
2007-12-20 11:31 ` David Miller
2007-12-21 3:43 ` Hideo AOKI [this message]
2007-12-18 2:38 ` [PATCH 2/4] [CORE]: datagram: basic memory accounting functions Hideo AOKI
2007-12-19 3:21 ` Hideo AOKI
2007-12-20 11:43 ` David Miller
2007-12-21 4:18 ` Hideo AOKI
2007-12-21 4:31 ` David Miller
2007-12-22 0:22 ` Hideo AOKI
2007-12-18 2:38 ` [PATCH 3/4] [UDP]: add udp_mem, udp_rmem_min and udp_wmem_min Hideo AOKI
2007-12-18 2:38 ` [PATCH 4/4] [UDP]: memory accounting in IPv4 Hideo AOKI
2007-12-20 11:44 ` David Miller
2007-12-21 3:58 ` Hideo AOKI
-- strict thread matches above, loose matches on Subject: below --
2007-12-15 5:07 [PATCH 0/4] [UDP]: memory accounting and limitation (take 10) Hideo AOKI
2007-12-15 5:14 ` [PATCH 1/4] [UDP]: fix send buffer check Hideo AOKI
2007-11-28 18:48 [PATCH 0/4] UDP memory accounting and limitation (take 9) Hideo AOKI
2007-11-28 18:52 ` [PATCH 1/4] udp: fix send buffer check Hideo AOKI
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=476B3655.4000508@redhat.com \
--to=haoki@redhat.com \
--cc=andi@firstfloor.org \
--cc=billfink@mindspring.com \
--cc=davem@davemloft.net \
--cc=herbert@gondor.apana.org.au \
--cc=johnpol@2ka.mipt.ru \
--cc=mhiramat@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=satoshi.oshima.fk@hitachi.com \
--cc=shemminger@linux-foundation.org \
--cc=tyasui@redhat.com \
--cc=yoshfuji@linux-ipv6.org \
--cc=yumiko.sugita.yf@hitachi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.