tcp/dccp: fix potential NULL deref in __inet_inherit_port()
authorEric Dumazet <edumazet@google.com>
Wed, 14 Oct 2015 12:58:38 +0000 (05:58 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 15 Oct 2015 02:06:31 +0000 (19:06 -0700)
commitc2f34a65a61cd1ace3b53c93e8b38d2f79f4ff0d
tree1c6ceda4dc9a0e2c0287ceae9d3e96159894cc16
parentfb0801dcc17845ef52a19f9f9fbbb88a1a93f9b6
tcp/dccp: fix potential NULL deref in __inet_inherit_port()

As we no longer hold listener lock in fast path, it is possible that a
child is created right after listener freed its bound port, if a close()
is done while incoming packets are processed.

__inet_inherit_port() must detect this and return an error,
so that caller can free the child earlier.

Fixes: e994b2f0fb92 ("tcp: do not lock listener to process SYN packets")
Fixes: 079096f103fa ("tcp/dccp: install syn_recv requests into ehash table")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/inet_hashtables.c