Files
linux/net/ipv4
Patrick McHardy 42d8bd7737 ip_fragment: also adjust skb->truesize for packets not owned by a socket
[ Upstream commit b2722b1c3a ]

When a large packet gets reassembled by ip_defrag(), the head skb
accounts for all the fragments in skb->truesize. If this packet is
refragmented again, skb->truesize is not re-adjusted to reflect only
the head size since its not owned by a socket. If the head fragment
then gets recycled and reused for another received fragment, it might
exceed the defragmentation limits due to its large truesize value.

skb_recycle_check() explicitly checks for linear skbs, so any recycled
skb should reflect its true size in skb->truesize. Change ip_fragment()
to also adjust the truesize value of skbs not owned by a socket.

Reported-and-tested-by: Ben Menchaca <ben@bigfootnetworks.com>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-12-18 14:05:05 -08:00
..
2009-09-14 17:03:01 -07:00
2009-09-01 17:40:57 -07:00
2008-07-16 20:20:11 -07:00
2009-10-07 03:18:17 -07:00
2009-09-14 17:03:01 -07:00
2009-08-28 23:57:15 -07:00
2009-09-14 17:03:01 -07:00
2009-06-03 02:51:04 -07:00
2009-09-14 17:03:01 -07:00
2009-06-03 02:51:04 -07:00
2009-10-19 21:34:20 -07:00
2009-09-14 17:03:01 -07:00
2009-06-13 23:36:32 -07:00
2008-10-07 08:38:24 +11:00
2009-06-03 02:51:04 -07:00
2009-04-27 02:45:02 -07:00
2009-09-14 17:03:01 -07:00
2009-03-02 03:00:15 -08:00
2009-03-02 03:00:15 -08:00
2009-03-02 03:00:14 -08:00
2009-09-15 01:30:10 -07:00
2009-09-15 01:30:10 -07:00
2009-03-13 16:05:14 -07:00
2009-05-25 22:44:59 -07:00
2009-03-02 03:00:15 -08:00
2009-03-02 03:00:15 -08:00
2009-09-14 17:03:01 -07:00
2009-10-30 12:25:12 -07:00
2009-09-14 17:03:01 -07:00
2009-06-03 02:51:04 -07:00
2009-06-03 02:51:04 -07:00
2009-06-03 02:51:04 -07:00