Pengcheng Yang
68fe2b265a
tcp: fix "old stuff" D-SACK causing SACK to be treated as D-SACK
...
[ Upstream commit c9655008e7 ]
When we receive a D-SACK, where the sequence number satisfies:
undo_marker <= start_seq < end_seq <= prior_snd_una
we consider this is a valid D-SACK and tcp_is_sackblock_valid()
returns true, then this D-SACK is discarded as "old stuff",
but the variable first_sack_index is not marked as negative
in tcp_sacktag_write_queue().
If this D-SACK also carries a SACK that needs to be processed
(for example, the previous SACK segment was lost), this SACK
will be treated as a D-SACK in the following processing of
tcp_sacktag_write_queue(), which will eventually lead to
incorrect updates of undo_retrans and reordering.
Fixes: fd6dad616d ("[TCP]: Earlier SACK block verification & simplify access to them")
Signed-off-by: Pengcheng Yang <yangpc@wangsu.com >
Signed-off-by: Eric Dumazet <edumazet@google.com >
Signed-off-by: David S. Miller <davem@davemloft.net >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2020-01-12 12:21:48 +01:00
..
2019-05-21 12:33:38 -07:00
2019-10-01 18:42:15 +02:00
2019-08-19 18:22:54 -07:00
2019-06-06 08:34:50 +02:00
2019-05-30 11:26:32 -07:00
2019-05-21 11:28:45 +02:00
2019-11-01 14:57:52 -07:00
2019-12-18 16:08:17 +01:00
2019-07-05 15:01:15 -07:00
2019-07-01 06:16:40 +02:00
2019-10-26 11:25:53 -07:00
2019-06-04 19:26:49 -07:00
2017-11-02 11:10:55 +01:00
2019-06-07 11:00:14 -07:00
2019-11-07 16:14:36 -08:00
2019-08-24 16:49:48 -07:00
2019-05-21 10:50:45 +02:00
2019-12-18 16:08:51 +01:00
2019-05-30 11:26:32 -07:00
2020-01-04 19:18:40 +01:00
2019-08-20 12:48:06 -07:00
2020-01-04 19:18:58 +01:00
2020-01-04 19:19:13 +01:00
2019-08-08 15:55:10 -07:00
2020-01-04 19:19:13 +01:00
2019-05-21 10:50:45 +02:00
2020-01-04 19:18:39 +01:00
2019-09-20 18:23:33 -07:00
2019-08-08 15:55:10 -07:00
2019-10-29 17:36:42 -07:00
2019-10-01 18:42:15 +02:00
2019-06-21 18:35:51 +02:00
2019-12-18 16:08:17 +01:00
2019-05-25 11:00:50 -07:00
2019-06-18 20:48:45 -04:00
2020-01-04 19:19:02 +01:00
2020-01-04 19:19:03 +01:00
2019-07-05 15:01:15 -07:00
2019-02-01 15:24:13 -08:00
2019-07-25 17:23:40 -07:00
2019-05-07 17:22:09 -07:00
2019-11-16 13:06:54 -08:00
2019-09-26 08:56:17 +02:00
2019-05-28 21:37:30 -07:00
2019-05-21 10:50:45 +02:00
2019-01-28 11:32:58 +01:00
2019-05-21 10:50:45 +02:00
2019-08-22 12:14:05 -07:00
2019-09-13 21:44:19 +02:00
2019-06-17 20:20:36 -07:00
2019-05-30 11:26:32 -07:00
2019-07-03 11:26:35 -07:00
2019-10-01 18:42:15 +02:00
2020-01-04 19:18:58 +01:00
2019-05-30 11:26:32 -07:00
2019-11-18 17:25:36 -08:00
2020-01-09 10:20:07 +01:00
2019-05-21 10:50:45 +02:00
2019-12-04 22:31:01 +01:00
2019-05-21 10:50:45 +02:00
2019-07-18 20:33:48 -07:00
2019-05-21 10:50:45 +02:00
2019-05-30 11:26:32 -07:00
2018-10-10 22:26:00 -07:00
2019-10-13 10:13:08 -07:00
2019-10-13 10:13:08 -07:00
2019-05-21 10:50:45 +02:00
2019-05-21 10:50:45 +02:00
2019-05-21 10:50:45 +02:00
2019-05-21 10:50:45 +02:00
2020-01-12 12:21:48 +01:00
2020-01-04 19:19:13 +01:00
2019-05-21 10:50:45 +02:00
2019-05-01 11:47:54 -04:00
2019-10-13 10:13:08 -07:00
2019-05-21 10:50:45 +02:00
2019-05-30 11:26:32 -07:00
2020-01-09 10:20:07 +01:00
2019-05-21 10:50:45 +02:00
2018-09-21 19:37:59 -07:00
2019-05-21 10:50:45 +02:00
2019-10-13 10:13:08 -07:00
2019-07-22 16:04:17 +02:00
2019-05-21 10:50:45 +02:00
2017-11-02 11:10:55 +01:00
2019-05-21 10:50:45 +02:00
2019-05-21 10:50:45 +02:00
2019-05-21 10:50:45 +02:00
2020-01-09 10:19:54 +01:00
2019-05-21 10:50:45 +02:00
2019-05-30 11:26:32 -07:00
2019-01-17 15:01:08 -08:00
2019-06-22 08:59:24 -04:00
2019-05-21 10:50:45 +02:00
2020-01-04 19:18:49 +01:00
2019-05-30 11:26:32 -07:00
2018-09-04 10:26:30 +02:00
2019-05-30 11:26:32 -07:00
2020-01-04 19:18:58 +01:00
2019-05-30 11:26:32 -07:00
2019-06-06 08:34:50 +02:00
2019-06-06 08:34:50 +02:00