linux-bl808/net
Eric Dumazet 8dbd76e79a tcp/dccp: fix possible race __inet_lookup_established()
Michal Kubecek and Firo Yang did a very nice analysis of crashes
happening in __inet_lookup_established().

Since a TCP socket can go from TCP_ESTABLISH to TCP_LISTEN
(via a close()/socket()/listen() cycle) without a RCU grace period,
I should not have changed listeners linkage in their hash table.

They must use the nulls protocol (Documentation/RCU/rculist_nulls.txt),
so that a lookup can detect a socket in a hash list was moved in
another one.

Since we added code in commit d296ba60d8 ("soreuseport: Resolve
merge conflict for v4/v6 ordering fix"), we have to add
hlist_nulls_add_tail_rcu() helper.

Fixes: 3b24d854cb ("tcp/dccp: do not touch listener sk_refcnt under synflood")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Michal Kubecek <mkubecek@suse.cz>
Reported-by: Firo Yang <firo.yang@suse.com>
Reviewed-by: Michal Kubecek <mkubecek@suse.cz>
Link: https://lore.kernel.org/netdev/20191120083919.GH27852@unicorn.suse.cz/
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
2019-12-13 21:40:49 -08:00
..
6lowpan
9p
802
8021q
appletalk
atm
ax25
batman-adv
bluetooth compat_ioctl: remove most of fs/compat_ioctl.c 2019-12-01 13:46:15 -08:00
bpf
bpfilter
bridge Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf 2019-12-09 14:03:33 -08:00
caif
can can: j1939: j1939_sk_bind(): take priv after lock is held 2019-12-08 11:52:02 +01:00
ceph libceph, rbd, ceph: convert to use the new mount API 2019-11-27 22:28:37 +01:00
core neighbour: remove neigh_cleanup() method 2019-12-09 09:48:47 -08:00
dcb
dccp net: ipv6: add net argument to ip6_dst_lookup_flow 2019-12-04 12:27:12 -08:00
decnet
dns_resolver
dsa
ethernet
hsr hsr: fix a NULL pointer dereference in hsr_dev_xmit() 2019-12-05 12:09:02 -08:00
ieee802154
ife
ipv4 tcp/dccp: fix possible race __inet_lookup_established() 2019-12-13 21:40:49 -08:00
ipv6 ipv6/addrconf: only check invalid header values when NETLINK_F_STRICT_CHK is set 2019-12-13 17:13:49 -08:00
iucv
kcm
key
l2tp net: ipv6: add net argument to ip6_dst_lookup_flow 2019-12-04 12:27:12 -08:00
l3mdev
lapb
llc
mac80211
mac802154
mpls net: ipv6_stub: use ip6_dst_lookup_flow instead of ip6_dst_lookup 2019-12-04 12:27:13 -08:00
ncsi
netfilter Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf 2019-12-09 14:03:33 -08:00
netlabel
netlink
netrom
nfc NFC: NCI: use new delay structure for SPI transfer delays 2019-12-04 17:00:58 -08:00
nsh
openvswitch net: Fixed updating of ethertype in skb_mpls_push() 2019-12-04 17:11:25 -08:00
packet af_packet: set defaule value for tmo 2019-12-09 14:30:19 -08:00
phonet
psample
qrtr
rds
rfkill compat_ioctl: remove most of fs/compat_ioctl.c 2019-12-01 13:46:15 -08:00
rose
rxrpc
sched net_sched: validate TCA_KIND attribute in tc_chain_tmplt_add() 2019-12-07 12:04:16 -08:00
sctp sctp: fully initialize v4 addr in some functions 2019-12-09 10:16:39 -08:00
smc
strparser
sunrpc This is a relatively quiet cycle for nfsd, mainly various bugfixes. 2019-12-07 16:56:00 -08:00
switchdev
tipc tipc: fix use-after-free in tipc_disc_rcv() 2019-12-10 17:45:04 -08:00
tls net/tls: Fix return values to avoid ENOTSUPP 2019-12-06 20:15:39 -08:00
unix compat_ioctl: remove most of fs/compat_ioctl.c 2019-12-01 13:46:15 -08:00
vmw_vsock - Support for new VMBus protocols (Andrea Parri). 2019-11-30 14:50:51 -08:00
wimax
wireless
x25 net/x25: add new state X25_STATE_5 2019-12-09 10:28:43 -08:00
xdp
xfrm
compat.c
Kconfig
Makefile
socket.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2019-12-08 13:28:11 -08:00
sysctl_net.c