Patch "udp6: fix UDP/IPv6 encap resubmit path" has been added to the 4.4-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
udp6: fix UDP/IPv6 encap resubmit path
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:
udp6-fix-udp-ipv6-encap-resubmit-path.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 <[email protected]> know about it.
Quoted 1 line
From foo@baz Sat Apr 16 10:02:53 PDT 2016
From: Bill Sommerfeld <[email protected]>
Date: Fri, 4 Mar 2016 14:47:21 -0800
Subject: udp6: fix UDP/IPv6 encap resubmit path
From: Bill Sommerfeld <[email protected]>
[ Upstream commit 59dca1d8a6725a121dae6c452de0b2611d5865dc ]
IPv4 interprets a negative return value from a protocol handler as a request to redispatch to a new protocol. In contrast, IPv6 interprets a negative value as an error, and interprets a positive value as a request for redispatch.
UDP for IPv6 was unaware of this difference. Change __udp6_lib_rcv() to return a positive value for redispatch. Note that the socket's encap_rcv hook still needs to return a negative value to request dispatch, and in the case of IPv6 packets, adjust IP6CB(skb)->nhoff to identify the byte containing the next protocol.
--- net/ipv6/udp.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
net/ipv6/udp.c +2 -4
@@ -916,11 +916,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, ret =udpv6_queue_rcv_skb (sk, skb);sock_put (sk); -/* a return value > 0 means to resubmit the input, but -* it wants the return to be -protocol, or 0 -*/ +/* a return value > 0 means to resubmit the input */ if (ret >0 ) -return -ret; +return ret;return 0 ; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/udp6-fix-udp-ipv6-encap-resubmit-path.patch