Pengcheng Yang
c9655008e7
tcp: fix "old stuff" D-SACK causing SACK to be treated as D-SACK
...
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 >
2020-01-02 15:42:28 -08:00
..
2019-05-21 12:33:38 -07:00
2019-11-15 23:44:47 +01:00
2019-11-26 13:20:46 -08: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-07 11:55:11 -08:00
2019-07-05 15:01:15 -07:00
2019-07-01 06:16:40 +02:00
2019-11-21 14:45:55 -08:00
2019-06-04 19:26:49 -07:00
2019-10-04 11:10:56 -07:00
2019-10-04 11:10:56 -07:00
2019-11-07 16:14:36 -08:00
2019-10-04 11:10:56 -07:00
2019-05-21 10:50:45 +02:00
2019-12-07 11:53:27 -08:00
2019-05-30 11:26:32 -07:00
2019-11-08 12:32:43 -08:00
2019-10-04 14:26:46 -07:00
2019-12-24 22:28:54 -08:00
2019-12-13 21:40:49 -08:00
2019-08-08 15:55:10 -07:00
2019-12-13 21:40:49 -08:00
2019-05-21 10:50:45 +02:00
2019-11-07 16:15:56 -08:00
2019-09-20 18:23:33 -07:00
2019-08-08 15:55:10 -07:00
2019-12-09 10:36:44 -08:00
2019-11-21 14:45:55 -08:00
2019-06-21 18:35:51 +02:00
2019-12-07 11:55:11 -08:00
2019-05-25 11:00:50 -07:00
2019-11-21 11:47:39 -08:00
2019-12-24 22:28:55 -08:00
2019-12-24 22:28:55 -08:00
2019-07-05 15:01:15 -07:00
2019-11-20 12:39:53 -08:00
2019-07-25 17:23:40 -07:00
2019-10-04 11:10:56 -07:00
2019-11-16 21:51:42 -08:00
2019-11-21 12:00:21 -08: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-11-21 11:46:18 -08: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
2019-12-24 22:28:54 -08:00
2019-11-07 16:17:52 -08:00
2019-11-22 16:27:24 -08:00
2019-12-17 22:09:52 -08:00
2019-05-21 10:50:45 +02:00
2019-11-28 22:40:29 -08:00
2019-05-21 10:50:45 +02:00
2019-11-20 22:23:36 -08: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-11-06 16:14:48 -08:00
2019-10-25 19:25:37 -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-02 15:42:28 -08:00
2019-12-13 21:40:49 -08: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
2019-12-30 20:28:39 -08: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-12-03 11:52:38 -08:00
2019-11-20 22:23:36 -08: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
2019-12-22 09:54:33 -08: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
2019-12-24 14:52:39 -08:00
2019-05-30 11:26:32 -07:00
2018-09-04 10:26:30 +02:00
2019-11-15 23:44:48 +01:00
2019-12-24 22:28:54 -08: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