Eric Dumazet 47e1c32306 tcp: fix a timewait refcnt race
After TCP RCU conversion, tw->tw_refcnt should not be set to 1 in
inet_twsk_alloc(). It allows a RCU reader to get this timewait socket,
while we not yet stabilized it.

Only choice we have is to set tw_refcnt to 0 in inet_twsk_alloc(),
then atomic_add() it later, once everything is done.

Location of this atomic_add() is tricky, because we dont want another
writer to find this timewait in ehash, while tw_refcnt is still zero !

Thanks to Kapil Dakhane tests and reports.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-12-03 16:17:44 -08:00
..
2009-05-25 01:53:53 -07:00
2009-11-25 15:14:13 -08:00
2009-11-25 15:14:13 -08:00
2009-11-25 15:14:13 -08:00
2009-11-25 15:14:13 -08:00
2009-12-03 16:17:44 -08:00
2009-11-25 15:14:13 -08:00
2009-11-25 15:14:13 -08:00
2009-11-25 15:14:13 -08:00
2009-11-25 15:14:13 -08:00
2009-11-25 15:14:13 -08:00
2009-07-12 12:22:34 -07:00