Message ID | 1389080383-25655-1-git-send-email-roy.qing.li@gmail.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: roy.qing.li@gmail.com Date: Tue, 7 Jan 2014 15:39:43 +0800 > From: Li RongQing <roy.qing.li@gmail.com> > > initialise pcpu_tstats.syncp to kill the calltrace ... > Before 469bdcefdc ("ipv6: fix the use of pcpu_tstats in ip6_vti.c"), > the pcpu_tstats.syncp is not used to pretect the 64bit elements of > pcpu_tstats, so not appear this calltrace. > > Reported-by: Fengguang Wu <fengguang.wu@intel.com> > Signed-off-by: Li RongQing <roy.qing.li@gmail.com> Applied, thanks. It looks like ip6_tunnel.c and sit.c are OK in this area. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/ipv6/ip6_vti.c b/net/ipv6/ip6_vti.c index a4564b0..7b42d5e 100644 --- a/net/ipv6/ip6_vti.c +++ b/net/ipv6/ip6_vti.c @@ -732,12 +732,18 @@ static void vti6_dev_setup(struct net_device *dev) static inline int vti6_dev_init_gen(struct net_device *dev) { struct ip6_tnl *t = netdev_priv(dev); + int i; t->dev = dev; t->net = dev_net(dev); dev->tstats = alloc_percpu(struct pcpu_tstats); if (!dev->tstats) return -ENOMEM; + for_each_possible_cpu(i) { + struct pcpu_tstats *stats; + stats = per_cpu_ptr(dev->tstats, i); + u64_stats_init(&stats->syncp); + } return 0; }