| From foo@baz Sun Dec 31 11:13:15 CET 2017 |
| From: "Nikita V. Shirokov" <tehnerd@fb.com> |
| Date: Wed, 6 Dec 2017 17:15:43 -0800 |
| Subject: adding missing rcu_read_unlock in ipxip6_rcv |
| |
| From: "Nikita V. Shirokov" <tehnerd@fb.com> |
| |
| |
| [ Upstream commit 74c4b656c3d92ec4c824ea1a4afd726b7b6568c8 ] |
| |
| commit 8d79266bc48c ("ip6_tunnel: add collect_md mode to IPv6 tunnels") |
| introduced new exit point in ipxip6_rcv. however rcu_read_unlock is |
| missing there. this diff is fixing this |
| |
| v1->v2: |
| instead of doing rcu_read_unlock in place, we are going to "drop" |
| section (to prevent skb leakage) |
| |
| Fixes: 8d79266bc48c ("ip6_tunnel: add collect_md mode to IPv6 tunnels") |
| Signed-off-by: Nikita V. Shirokov <tehnerd@fb.com> |
| Acked-by: Alexei Starovoitov <ast@kernel.org> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/ipv6/ip6_tunnel.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/net/ipv6/ip6_tunnel.c |
| +++ b/net/ipv6/ip6_tunnel.c |
| @@ -911,7 +911,7 @@ static int ipxip6_rcv(struct sk_buff *sk |
| if (t->parms.collect_md) { |
| tun_dst = ipv6_tun_rx_dst(skb, 0, 0, 0); |
| if (!tun_dst) |
| - return 0; |
| + goto drop; |
| } |
| ret = __ip6_tnl_rcv(t, skb, tpi, tun_dst, dscp_ecn_decapsulate, |
| log_ecn_error); |