Eric Dumazet c52e2421f7 tcp: must unclone packets before mangling them
TCP stack should make sure it owns skbs before mangling them.

We had various crashes using bnx2x, and it turned out gso_size
was cleared right before bnx2x driver was populating TC descriptor
of the _previous_ packet send. TCP stack can sometime retransmit
packets that are still in Qdisc.

Of course we could make bnx2x driver more robust (using
ACCESS_ONCE(shinfo->gso_size) for example), but the bug is TCP stack.

We have identified two points where skb_unclone() was needed.

This patch adds a WARN_ON_ONCE() to warn us if we missed another
fix of this kind.

Kudos to Neal for finding the root cause of this bug. Its visible
using small MSS.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Neal Cardwell <ncardwell@google.com>
Cc: Yuchung Cheng <ycheng@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-10-17 16:08:08 -04:00
..
2013-09-03 21:41:43 -04:00
2013-03-17 14:35:13 -04:00
2012-10-08 17:42:36 -04:00
2013-09-03 21:41:43 -04:00
2012-01-20 14:17:26 -05:00
2012-05-17 14:59:59 -04:00
2011-03-31 11:26:23 -03:00
2013-03-21 11:47:50 -04:00
2013-03-21 11:47:50 -04:00
2011-03-31 11:26:23 -03:00
2012-03-11 23:42:51 -07:00
2012-04-15 12:37:19 -04:00
2013-05-31 17:19:05 -07:00