Eric Dumazet 2306c704ce inet: fix race in reqsk_queue_unlink()
reqsk_timer_handler() tests if icsk_accept_queue.listen_opt
is NULL at its beginning.

By the time it calls inet_csk_reqsk_queue_drop() and
reqsk_queue_unlink(), listener might have been closed and
inet_csk_listen_stop() had called reqsk_queue_yank_acceptq()
which sets icsk_accept_queue.listen_opt to NULL

We therefore need to correctly check listen_opt being NULL
after holding syn_wait_lock for proper synchronization.

Fixes: fa76ce7328b2 ("inet: get rid of central tcp/dccp listener timer")
Fixes: b357a364c57c ("inet: fix possible panic in reqsk_queue_unlink()")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Yuchung Cheng <ycheng@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-10-05 04:04:09 -07:00
..
2015-09-01 14:32:44 -07:00
2015-08-25 13:38:50 -07:00
2015-05-28 11:23:20 +08:00
2015-09-01 14:32:44 -07:00
2015-08-29 13:07:54 -07:00
2015-09-25 21:44:02 -07:00
2013-12-29 16:34:25 -05:00
2015-07-21 10:39:05 -07:00
2015-07-09 21:09:10 -07:00
2015-07-09 14:22:52 -07:00
2015-07-09 14:22:52 -07:00
2014-09-01 18:12:45 -07:00
2015-07-09 14:22:52 -07:00
2015-07-09 14:22:52 -07:00
2015-01-28 22:18:37 -08:00
2012-03-11 23:42:51 -07:00
2014-05-23 16:28:53 -04:00
2013-05-31 17:19:05 -07:00