Gleb Smirnoff
0e2bc05c47
Fix tcp_output() so that tcpcb is updated in the same manner when an
...
mbuf allocation fails, as in a case when ip_output() returns error.
To achieve that, move large block of code that updates tcpcb below
the out: label.
This fixes a panic, that requires the following sequence to happen:
1) The SYN was sent to the network, tp->snd_nxt = iss + 1, tp->snd_una = iss
2) The retransmit timeout happened for the SYN we had sent,
tcp_timer_rexmt() sets tp->snd_nxt = tp->snd_una, and calls tcp_output().
In tcp_output m_get() fails.
3) Later on the SYN|ACK for the SYN sent in step 1) came,
tcp_input sets tp->snd_una += 1, which leads to
tp->snd_una > tp->snd_nxt inconsistency, that later panics in
socket buffer code.
For reference, this bug fixed in DragonflyBSD repo:
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/1ff9b7d322dc5a26f7173aa8c38ecb79da80e419
Reviewed by: andre
Tested by: pho
Sponsored by: Nginx, Inc.
PR: kern/177456
Submitted by: HouYeFei&XiBoLiu <lglion718 163.com>
2013-04-11 18:23:56 +00:00
..
2011-04-13 11:28:46 +00:00
2012-08-17 01:49:51 +00:00
2013-03-17 07:37:10 +00:00
2011-11-07 15:43:11 +00:00
2011-04-12 08:13:18 +00:00
2012-03-04 18:47:20 +00:00
2012-06-18 17:11:24 +00:00
2010-12-15 22:58:45 +00:00
2012-12-13 11:11:15 +00:00
2013-01-31 08:55:21 +00:00
2013-03-16 08:58:28 +00:00
2012-07-31 08:04:49 +00:00
2011-10-15 16:28:06 +00:00
2012-12-05 08:04:20 +00:00
2012-01-24 14:27:14 +00:00
2013-01-25 20:14:27 +00:00
2013-04-09 21:02:20 +00:00
2011-06-06 12:55:02 +00:00
2012-01-09 08:50:22 +00:00
2012-10-13 09:31:01 +00:00
2013-04-10 08:09:25 +00:00
2013-01-31 08:55:21 +00:00
2012-10-22 21:09:03 +00:00
2013-04-09 07:11:22 +00:00
2013-03-15 12:55:30 +00:00
2013-02-11 10:58:22 +00:00
2012-10-22 21:09:03 +00:00
2012-08-07 07:52:25 +00:00
2012-11-02 01:20:55 +00:00
2013-03-20 10:35:33 +00:00
2012-10-22 21:09:03 +00:00
2012-12-05 08:04:20 +00:00
2013-04-09 21:02:20 +00:00
2013-04-09 21:02:20 +00:00
2012-10-22 21:09:03 +00:00
2013-03-15 12:55:30 +00:00
2012-07-02 19:44:18 +00:00
2013-03-16 08:58:28 +00:00
2012-10-12 09:24:24 +00:00
2013-03-15 12:55:30 +00:00
2013-04-08 19:57:21 +00:00
2012-05-04 21:00:32 +00:00
2012-12-05 08:04:20 +00:00
2013-02-09 17:26:14 +00:00
2012-06-28 16:01:08 +00:00
2012-12-05 08:04:20 +00:00
2012-05-23 11:26:28 +00:00
2012-08-04 08:03:30 +00:00
2012-06-24 21:25:54 +00:00
2012-09-06 07:03:56 +00:00
2013-03-31 18:27:46 +00:00
2012-05-23 11:26:28 +00:00
2012-05-23 11:26:28 +00:00
2012-05-23 11:26:28 +00:00
2012-05-23 11:26:28 +00:00
2012-09-07 13:36:42 +00:00
2013-02-11 13:57:03 +00:00
2012-06-28 16:01:08 +00:00
2013-02-09 17:26:14 +00:00
2012-09-07 13:36:42 +00:00
2012-05-23 11:26:28 +00:00
2012-06-28 16:01:08 +00:00
2012-05-23 11:26:28 +00:00
2013-02-11 21:02:49 +00:00
2013-02-09 17:26:14 +00:00
2013-02-11 21:02:49 +00:00
2013-02-11 21:02:49 +00:00
2012-11-26 16:44:03 +00:00
2012-11-25 14:25:08 +00:00
2012-05-23 11:26:28 +00:00
2013-02-09 17:26:14 +00:00
2013-02-09 17:26:14 +00:00
2012-06-25 17:15:09 +00:00
2013-02-09 08:27:08 +00:00
2012-05-23 11:26:28 +00:00
2012-10-29 20:47:32 +00:00
2013-02-11 21:02:49 +00:00
2012-10-29 20:47:32 +00:00
2013-02-09 17:26:14 +00:00
2013-02-27 19:51:47 +00:00
2012-11-17 20:04:04 +00:00
2013-03-07 04:42:20 +00:00
2012-10-22 21:09:03 +00:00
2012-10-19 14:00:03 +00:00
2013-04-09 20:52:26 +00:00
2013-02-21 17:00:35 +00:00
2012-05-24 23:03:23 +00:00
2012-06-19 07:34:13 +00:00
2012-06-19 07:34:13 +00:00
2013-04-11 18:23:56 +00:00
2013-02-01 14:21:09 +00:00
2011-03-28 19:03:56 +00:00
2012-02-15 16:09:56 +00:00
2013-04-09 21:02:20 +00:00
2013-02-01 14:21:09 +00:00
2012-10-28 18:07:34 +00:00
2013-03-04 11:09:56 +00:00
2012-11-27 19:07:28 +00:00
2012-12-05 08:04:20 +00:00
2013-01-26 01:41:42 +00:00
2013-04-08 19:57:21 +00:00
2013-02-01 15:32:20 +00:00
2013-01-26 00:57:29 +00:00
2012-08-21 18:09:33 +00:00
2012-12-08 12:51:06 +00:00
2012-03-27 15:14:29 +00:00
2013-02-01 15:32:20 +00:00