Skip to contentSkip to conversation

Patch "tcp/dccp: remove obsolete WARN_ON() in icmp handlers" has been added to the 4.5-stable tree

PATCH [email protected] 1 participant 1 message Apr 16, 2016

Subsystems (3)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

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.5-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.5 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From foo@baz Sat Apr 16 09:15:18 PDT 2016

From: Eric Dumazet <[email protected]>
Date: Wed, 16 Mar 2016 22:52:15 -0700
Subject: tcp/dccp: remove obsolete WARN_ON() in icmp handlers

From: Eric Dumazet <[email protected]>

[ 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")
---
 net/dccp/ipv4.c     |    2 --
 net/ipv4/tcp_ipv4.c |    2 --
 2 files changed, 4 deletions(-)
net/dccp/ipv4.c +0 -2
@@ -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 {
net/ipv4/tcp_ipv4.c +0 -2
@@ -319,8 +319,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 [email protected] are

queue-4.5/tcp-dccp-remove-obsolete-warn_on-in-icmp-handlers.patch queue-4.5/ipv6-udp-fix-udp_mib_ignoredmulti-updates.patch queue-4.5/net-fix-use-after-free-in-the-recvmmsg-exit-path.patch queue-4.5/bonding-fix-bond_get_stats.patch queue-4.5/net-bcmgenet-fix-dma-api-length-mismatch.patch