diff options
author | Hannes Frederic Sowa <hannes@stressinduktion.org> | 2013-11-29 06:39:44 +0100 |
---|---|---|
committer | Stefan Bader <stefan.bader@canonical.com> | 2014-05-20 16:35:06 +0200 |
commit | 664d16717dc3c909312f462e4d851354ff234368 (patch) | |
tree | a46ef7b03df8b7510e77536cb2aae0f081b59dee | |
parent | 963b8263b1efce99c93cd4defa2c1b80af1cf8ae (diff) | |
download | linux-2.6.32.y-drm33.z-664d16717dc3c909312f462e4d851354ff234368.tar.gz |
ipv6: fix possible seqlock deadlock in ip6_finish_output2
[ Upstream commit 7f88c6b23afbd31545c676dea77ba9593a1a14bf ]
IPv6 stats are 64 bits and thus are protected with a seqlock. By not
disabling bottom-half we could deadlock here if we don't disable bh and
a softirq reentrantly updates the same mib.
Cc: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Willy Tarreau <w@1wt.eu>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
-rw-r--r-- | net/ipv6/ip6_output.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index bb63ffcd7244e0..6ff4d07aa20980 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c @@ -91,8 +91,8 @@ static int ip6_output_finish(struct sk_buff *skb) else if (dst->neighbour) return dst->neighbour->output(skb); - IP6_INC_STATS_BH(dev_net(dst->dev), - ip6_dst_idev(dst), IPSTATS_MIB_OUTNOROUTES); + IP6_INC_STATS(dev_net(dst->dev), + ip6_dst_idev(dst), IPSTATS_MIB_OUTNOROUTES); kfree_skb(skb); return -EINVAL; |