Eric Dumazet 2235f2ac75 inet: fix races with reqsk timers
reqsk_queue_destroy() and reqsk_queue_unlink() should use
del_timer_sync() instead of del_timer() before calling reqsk_put(),
otherwise we could free a req still used by another cpu.

But before doing so, reqsk_queue_destroy() must release syn_wait_lock
spinlock or risk a dead lock, as reqsk_timer_handler() might
need to take this same spinlock from reqsk_queue_unlink() (called from
inet_csk_reqsk_queue_drop())

Fixes: fa76ce7328b2 ("inet: get rid of central tcp/dccp listener timer")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-08-10 21:17:29 -07:00
..
2014-09-18 10:54:36 +02:00
2015-05-28 11:23:20 +08:00
2013-12-29 16:34:25 -05:00
2015-05-17 13:08:29 -04:00
2015-06-11 00:09:12 -07:00
2015-06-11 00:09:12 -07:00
2015-01-28 22:18:37 -08:00
2015-06-14 12:57:45 -07:00
2014-09-01 18:12:45 -07:00
2014-09-01 18:12:45 -07:00
2014-09-01 18:12:45 -07:00
2015-06-07 01:55:01 -07:00
2014-09-01 18:12:45 -07:00
2015-01-28 22:18:37 -08:00
2015-01-28 22:18:37 -08:00
2015-01-28 22:18:37 -08:00
2014-05-23 16:28:53 -04:00
2013-05-31 17:19:05 -07:00