diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 2a2be8bd3c93b9bcd43907f7714e96d4ba07ef09..dfc1b8218faadb24906c2488c7a49808af851b23 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c @@ -1896,6 +1896,7 @@ int ip6_send_skb(struct sk_buff *skb) struct rt6_info *rt = (struct rt6_info *)skb_dst(skb); int err; + rcu_read_lock(); err = ip6_local_out(net, skb->sk, skb); if (err) { if (err > 0) @@ -1905,6 +1906,7 @@ int ip6_send_skb(struct sk_buff *skb) IPSTATS_MIB_OUTDISCARDS); } + rcu_read_unlock(); return err; }