tcp: relax listening_hash operations
authorEric Dumazet <edumazet@google.com>
Thu, 20 Oct 2016 04:24:58 +0000 (21:24 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 20 Oct 2016 15:24:32 +0000 (11:24 -0400)
commit9652dc2eb9e40d100e0a3abfdcc0ea852c8be254
treee3efd14c1b27eba8a65381fa769023fb9f473831
parent25c07e2c5ec80a1c7390b41e2b03ca3d0e31fc01
tcp: relax listening_hash operations

softirq handlers use RCU protection to lookup listeners,
and write operations all happen from process context.
We do not need to block BH for dump operations.

Also SYN_RECV since request sockets are stored in the ehash table :

 1) inet_diag_dump_icsk() no longer need to clear
    cb->args[3] and cb->args[4] that were used as cursors while
    iterating the old per listener hash table.

 2) Also factorize a test : No need to scan listening_hash[]
    if r->id.idiag_dport is not zero.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/inet_diag.c
net/ipv4/tcp_ipv4.c