[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <4CC99FDC.9070102@parallels.com>
Date: Thu, 28 Oct 2010 20:07:56 +0400
From: Pavel Emelyanov <xemul@...allels.com>
To: David Miller <davem@...emloft.net>
CC: Eric Dumazet <eric.dumazet@...il.com>,
Linux Netdev List <netdev@...r.kernel.org>
Subject: [PATCH] ip_gre: fix percpu stats accounting
commit e985aad7 (ip_gre: percpu stats accounting) forgot the fallback
tunnel case (gre0).
This is the 4th part of the "foo: fix percpu stats accounting" series ;)
Signed-off-by: Pavel Emelyanov <xemul@...nvz.org>
---
diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
index 01087e0..be05d5b 100644
--- a/net/ipv4/ip_gre.c
+++ b/net/ipv4/ip_gre.c
@@ -1321,7 +1321,7 @@ static int ipgre_tunnel_init(struct net_device *dev)
return 0;
}
-static void ipgre_fb_tunnel_init(struct net_device *dev)
+static int ipgre_fb_tunnel_init(struct net_device *dev)
{
struct ip_tunnel *tunnel = netdev_priv(dev);
struct iphdr *iph = &tunnel->parms.iph;
@@ -1335,8 +1335,13 @@ static void ipgre_fb_tunnel_init(struct net_device *dev)
iph->ihl = 5;
tunnel->hlen = sizeof(struct iphdr) + 4;
+ dev->tstats = alloc_percpu(struct pcpu_tstats);
+ if (!dev->tstats)
+ return -ENOMEM;
+
dev_hold(dev);
rcu_assign_pointer(ign->tunnels_wc[0], tunnel);
+ return 0;
}
@@ -1377,7 +1382,10 @@ static int __net_init ipgre_init_net(struct net *net)
}
dev_net_set(ign->fb_tunnel_dev, net);
- ipgre_fb_tunnel_init(ign->fb_tunnel_dev);
+ err = ipgre_fb_tunnel_init(ign->fb_tunnel_dev);
+ if (err)
+ goto err_reg_dev;
+
ign->fb_tunnel_dev->rtnl_link_ops = &ipgre_link_ops;
if ((err = register_netdev(ign->fb_tunnel_dev)))
@@ -1386,7 +1394,7 @@ static int __net_init ipgre_init_net(struct net *net)
return 0;
err_reg_dev:
- free_netdev(ign->fb_tunnel_dev);
+ ipgre_dev_free(ign->fb_tunnel_dev);
err_alloc_dev:
return err;
}
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists