Eric Dumazet
11db1e4cee
tcp: must unclone packets before mangling them
...
[ Upstream commit c52e2421f7 ]
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 >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2013-11-04 04:23:40 -08:00
..
2012-04-15 17:35:19 -07:00
2013-06-20 11:58:47 -07:00
2012-11-26 11:38:03 -08:00
2012-04-23 14:23:32 +03:00
2012-04-16 16:45:34 +02:00
2012-08-15 08:10:33 -07:00
2012-07-16 09:04:39 -07:00
2012-08-15 08:10:32 -07:00
2012-10-02 10:29:54 -07:00
2012-10-28 10:14:16 -07:00
2012-10-21 09:28:00 -07:00
2012-04-16 15:19:12 -04:00
2012-04-27 11:03:38 -06:00
2013-04-25 21:19:55 -07:00
2012-11-17 13:16:12 -08:00
2013-02-28 06:59:02 -08:00
2012-07-16 09:04:23 -07:00
2013-04-12 09:38:44 -07:00
2013-05-19 10:54:39 -07:00
2013-03-04 06:06:43 +08:00
2013-03-28 12:12:28 -07:00
2012-05-14 08:29:23 +02:00
2013-02-28 06:59:05 -08:00
2013-06-20 11:58:44 -07:00
2012-10-02 10:29:51 -07:00
2013-02-14 10:48:53 -08:00
2012-05-07 19:21:29 -04:00
2013-08-04 16:26:02 +08:00
2013-08-04 16:26:02 +08:00
2013-01-11 09:06:58 -08:00
2012-05-11 16:42:14 +02:00
2013-08-14 22:57:08 -07:00
2013-06-13 09:45:03 -07:00
2012-05-15 08:22:04 +02:00
2012-04-27 10:46:45 +08:00
2013-10-01 09:10:51 -07:00
2012-07-19 08:59:00 -07:00
2013-08-20 08:26:28 -07:00
2013-09-14 06:02:10 -07:00
2013-05-19 10:54:47 -07:00
2013-07-28 16:25:59 -07:00
2013-02-28 06:59:06 -08:00
2012-10-02 10:30:35 -07:00
2013-05-07 19:51:56 -07:00
2013-09-14 06:02:10 -07:00
2012-04-23 11:04:29 +10:00
2012-08-15 08:10:29 -07:00
2013-05-07 19:51:57 -07:00
2012-07-19 08:59:00 -07:00
2012-04-12 18:35:58 -07:00
2012-06-10 00:36:11 +09:00
2012-10-02 10:29:55 -07:00
2013-04-16 21:27:26 -07:00
2012-10-02 10:30:40 -07:00
2012-10-02 10:30:36 -07:00
2013-04-25 21:19:55 -07:00
2013-04-25 21:19:55 -07:00
2013-04-12 09:38:44 -07:00
2012-10-31 10:02:56 -07:00
2012-10-02 10:30:05 -07:00
2012-12-17 10:37:42 -08:00
2012-07-16 09:03:49 -07:00
2013-10-13 15:42:49 -07:00
2013-02-28 06:59:00 -08:00
2012-07-16 09:04:44 -07:00
2012-06-17 11:21:23 -07:00
2012-08-09 08:31:30 -07:00
2013-05-01 09:41:06 -07:00
2012-04-24 00:16:24 -04:00
2012-10-28 10:14:15 -07:00
2012-10-02 10:30:19 -07:00
2012-04-20 23:14:28 -04:00
2013-01-11 09:06:48 -08:00
2013-01-11 09:07:16 -08:00
2012-07-16 09:04:39 -07:00
2013-10-01 09:10:52 -07:00
2012-04-29 13:12:42 -07:00
2012-08-09 08:31:39 -07:00
2013-04-12 09:38:46 -07:00
2013-03-04 06:06:43 +08:00
2013-03-04 06:06:37 +08:00
2012-06-10 00:36:17 +09:00
2013-10-22 09:02:25 +01:00
2013-06-27 11:27:32 -07:00
2013-09-26 17:15:32 -07:00
2012-07-16 09:03:52 -07:00
2013-01-27 20:47:43 -08:00
2012-05-04 15:13:54 -07:00
2013-11-04 04:23:40 -08:00
2013-01-11 09:07:15 -08:00
2013-06-27 11:27:32 -07:00
2013-04-12 09:38:46 -07:00
2012-07-16 09:04:42 -07:00
2012-04-14 07:47:49 -07:00
2013-06-20 11:58:46 -07:00
2013-02-21 10:04:57 -08:00
2013-04-05 10:04:38 -07:00
2012-10-02 10:30:36 -07:00
2013-04-05 10:04:40 -07:00
2012-08-26 15:00:43 -07:00
2013-08-04 16:26:03 +08:00
2012-04-25 21:26:33 -07:00
2013-02-28 06:59:05 -08:00
2013-08-29 09:50:13 -07:00
2012-10-13 05:38:41 +09:00