aboutsummaryrefslogtreecommitdiffstats
path: root/net/core
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2008-05-09 18:24:09 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2008-05-09 18:24:09 -0400
commit1f2ee6496b1f71e9d5aa2448745e65fbafdc3bd5 (patch)
tree3f143311afca5e316afd06c2fc4f7d73b19cdcf0 /net/core
parent5bf6c6e30d8b71d092e8830208e182d84b907fcd (diff)
parentda109897a142dd017172c0ce7abf0be8646f7109 (diff)
Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/nico/orion into fixes
Diffstat (limited to 'net/core')
-rw-r--r--net/core/dev.c12
-rw-r--r--net/core/skbuff.c4
2 files changed, 12 insertions, 4 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index d334446a8eaf..a1607bc0cd4c 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -994,6 +994,8 @@ int dev_open(struct net_device *dev)
994{ 994{
995 int ret = 0; 995 int ret = 0;
996 996
997 ASSERT_RTNL();
998
997 /* 999 /*
998 * Is it already up? 1000 * Is it already up?
999 */ 1001 */
@@ -1060,6 +1062,8 @@ int dev_open(struct net_device *dev)
1060 */ 1062 */
1061int dev_close(struct net_device *dev) 1063int dev_close(struct net_device *dev)
1062{ 1064{
1065 ASSERT_RTNL();
1066
1063 might_sleep(); 1067 might_sleep();
1064 1068
1065 if (!(dev->flags & IFF_UP)) 1069 if (!(dev->flags & IFF_UP))
@@ -4480,17 +4484,19 @@ static void __net_exit default_device_exit(struct net *net)
4480 rtnl_lock(); 4484 rtnl_lock();
4481 for_each_netdev_safe(net, dev, next) { 4485 for_each_netdev_safe(net, dev, next) {
4482 int err; 4486 int err;
4487 char fb_name[IFNAMSIZ];
4483 4488
4484 /* Ignore unmoveable devices (i.e. loopback) */ 4489 /* Ignore unmoveable devices (i.e. loopback) */
4485 if (dev->features & NETIF_F_NETNS_LOCAL) 4490 if (dev->features & NETIF_F_NETNS_LOCAL)
4486 continue; 4491 continue;
4487 4492
4488 /* Push remaing network devices to init_net */ 4493 /* Push remaing network devices to init_net */
4489 err = dev_change_net_namespace(dev, &init_net, "dev%d"); 4494 snprintf(fb_name, IFNAMSIZ, "dev%d", dev->ifindex);
4495 err = dev_change_net_namespace(dev, &init_net, fb_name);
4490 if (err) { 4496 if (err) {
4491 printk(KERN_WARNING "%s: failed to move %s to init_net: %d\n", 4497 printk(KERN_EMERG "%s: failed to move %s to init_net: %d\n",
4492 __func__, dev->name, err); 4498 __func__, dev->name, err);
4493 unregister_netdevice(dev); 4499 BUG();
4494 } 4500 }
4495 } 4501 }
4496 rtnl_unlock(); 4502 rtnl_unlock();
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 4fe605fa6f8a..5c459f2b7985 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -200,7 +200,9 @@ struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask,
200 goto nodata; 200 goto nodata;
201 201
202 /* 202 /*
203 * See comment in sk_buff definition, just before the 'tail' member 203 * Only clear those fields we need to clear, not those that we will
204 * actually initialise below. Hence, don't put any more fields after
205 * the tail pointer in struct sk_buff!
204 */ 206 */
205 memset(skb, 0, offsetof(struct sk_buff, tail)); 207 memset(skb, 0, offsetof(struct sk_buff, tail));
206 skb->truesize = size + sizeof(struct sk_buff); 208 skb->truesize = size + sizeof(struct sk_buff);