tcp: fix skb_availroom()
authorEric Dumazet <edumazet@google.com>
Thu, 14 Mar 2013 05:40:32 +0000 (05:40 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 14 Mar 2013 15:49:45 +0000 (11:49 -0400)
commit16fad69cfe4adbbfa813de516757b87bcae36d93
tree5b16184db33e16e398fa88ca1dcbb4f054fdaffa
parentb701f16dd490d3f346724050f17d60beda094998
tcp: fix skb_availroom()

Chrome OS team reported a crash on a Pixel ChromeBook in TCP stack :

https://code.google.com/p/chromium/issues/detail?id=182056

commit a21d45726acac (tcp: avoid order-1 allocations on wifi and tx
path) did a poor choice adding an 'avail_size' field to skb, while
what we really needed was a 'reserved_tailroom' one.

It would have avoided commit 22b4a4f22da (tcp: fix retransmit of
partially acked frames) and this commit.

Crash occurs because skb_split() is not aware of the 'avail_size'
management (and should not be aware)

Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Mukesh Agrawal <quiche@chromium.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/skbuff.h
net/ipv4/tcp.c
net/ipv4/tcp_output.c