This is a note to let you know that I've just added the patch titled tcp/dccp: remove obsolete WARN_ON() in icmp handlers to the 4.4-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: tcp-dccp-remove-obsolete-warn_on-in-icmp-handlers.patch and it can be found in the queue-4.4 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From foo@baz Sat Apr 16 10:02:53 PDT 2016 From: Eric Dumazet <edumazet@xxxxxxxxxx> Date: Wed, 16 Mar 2016 22:52:15 -0700 Subject: tcp/dccp: remove obsolete WARN_ON() in icmp handlers From: Eric Dumazet <edumazet@xxxxxxxxxx> [ Upstream commit e316ea62e3203d524ff0239a40c56d3a39ad1b5c ] Now SYN_RECV request sockets are installed in ehash table, an ICMP handler can find a request socket while another cpu handles an incoming packet transforming this SYN_RECV request socket into an ESTABLISHED socket. We need to remove the now obsolete WARN_ON(req->sk), since req->sk is set when a new child is created and added into listener accept queue. If this race happens, the ICMP will do nothing special. Fixes: 079096f103fa ("tcp/dccp: install syn_recv requests into ehash table") Signed-off-by: Eric Dumazet <edumazet@xxxxxxxxxx> Reported-by: Ben Lazarus <blazarus@xxxxxxxxxx> Reported-by: Neal Cardwell <ncardwell@xxxxxxxxxx> Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- net/dccp/ipv4.c | 2 -- net/ipv4/tcp_ipv4.c | 2 -- 2 files changed, 4 deletions(-) --- a/net/dccp/ipv4.c +++ b/net/dccp/ipv4.c @@ -204,8 +204,6 @@ void dccp_req_err(struct sock *sk, u64 s * ICMPs are not backlogged, hence we cannot get an established * socket here. */ - WARN_ON(req->sk); - if (!between48(seq, dccp_rsk(req)->dreq_iss, dccp_rsk(req)->dreq_gss)) { NET_INC_STATS_BH(net, LINUX_MIB_OUTOFWINDOWICMPS); } else { --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -320,8 +320,6 @@ void tcp_req_err(struct sock *sk, u32 se /* ICMPs are not backlogged, hence we cannot get * an established socket here. */ - WARN_ON(req->sk); - if (seq != tcp_rsk(req)->snt_isn) { NET_INC_STATS_BH(net, LINUX_MIB_OUTOFWINDOWICMPS); } else if (abort) { Patches currently in stable-queue which might be from edumazet@xxxxxxxxxx are queue-4.4/tcp-fix-tcpi_segs_in-after-connection-establishment.patch queue-4.4/tcp-dccp-remove-obsolete-warn_on-in-icmp-handlers.patch queue-4.4/ipv6-udp-fix-udp_mib_ignoredmulti-updates.patch queue-4.4/net-fix-use-after-free-in-the-recvmmsg-exit-path.patch queue-4.4/bonding-fix-bond_get_stats.patch queue-4.4/net-bcmgenet-fix-dma-api-length-mismatch.patch -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html