aboutsummaryrefslogtreecommitdiffstats
path: root/net/core
diff options
context:
space:
mode:
Diffstat (limited to 'net/core')
-rw-r--r--net/core/dev.c24
-rw-r--r--net/core/rtnetlink.c8
2 files changed, 6 insertions, 26 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index e95dc30110eb..3b79bad3d02d 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -948,7 +948,7 @@ int dev_alloc_name(struct net_device *dev, const char *name)
948} 948}
949EXPORT_SYMBOL(dev_alloc_name); 949EXPORT_SYMBOL(dev_alloc_name);
950 950
951static int dev_get_valid_name(struct net_device *dev, const char *name, bool fmt) 951static int dev_get_valid_name(struct net_device *dev, const char *name)
952{ 952{
953 struct net *net; 953 struct net *net;
954 954
@@ -958,7 +958,7 @@ static int dev_get_valid_name(struct net_device *dev, const char *name, bool fmt
958 if (!dev_valid_name(name)) 958 if (!dev_valid_name(name))
959 return -EINVAL; 959 return -EINVAL;
960 960
961 if (fmt && strchr(name, '%')) 961 if (strchr(name, '%'))
962 return dev_alloc_name(dev, name); 962 return dev_alloc_name(dev, name);
963 else if (__dev_get_by_name(net, name)) 963 else if (__dev_get_by_name(net, name))
964 return -EEXIST; 964 return -EEXIST;
@@ -995,7 +995,7 @@ int dev_change_name(struct net_device *dev, const char *newname)
995 995
996 memcpy(oldname, dev->name, IFNAMSIZ); 996 memcpy(oldname, dev->name, IFNAMSIZ);
997 997
998 err = dev_get_valid_name(dev, newname, 1); 998 err = dev_get_valid_name(dev, newname);
999 if (err < 0) 999 if (err < 0)
1000 return err; 1000 return err;
1001 1001
@@ -5420,8 +5420,8 @@ int register_netdevice(struct net_device *dev)
5420 } 5420 }
5421 } 5421 }
5422 5422
5423 ret = dev_get_valid_name(dev, dev->name, 0); 5423 ret = dev_get_valid_name(dev, dev->name);
5424 if (ret) 5424 if (ret < 0)
5425 goto err_uninit; 5425 goto err_uninit;
5426 5426
5427 dev->ifindex = dev_new_index(net); 5427 dev->ifindex = dev_new_index(net);
@@ -5562,19 +5562,7 @@ int register_netdev(struct net_device *dev)
5562 int err; 5562 int err;
5563 5563
5564 rtnl_lock(); 5564 rtnl_lock();
5565
5566 /*
5567 * If the name is a format string the caller wants us to do a
5568 * name allocation.
5569 */
5570 if (strchr(dev->name, '%')) {
5571 err = dev_alloc_name(dev, dev->name);
5572 if (err < 0)
5573 goto out;
5574 }
5575
5576 err = register_netdevice(dev); 5565 err = register_netdevice(dev);
5577out:
5578 rtnl_unlock(); 5566 rtnl_unlock();
5579 return err; 5567 return err;
5580} 5568}
@@ -6056,7 +6044,7 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char
6056 /* We get here if we can't use the current device name */ 6044 /* We get here if we can't use the current device name */
6057 if (!pat) 6045 if (!pat)
6058 goto out; 6046 goto out;
6059 if (dev_get_valid_name(dev, pat, 1)) 6047 if (dev_get_valid_name(dev, pat) < 0)
6060 goto out; 6048 goto out;
6061 } 6049 }
6062 6050
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index 296331257195..5a160f4a1ba0 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -1572,12 +1572,6 @@ struct net_device *rtnl_create_link(struct net *src_net, struct net *net,
1572 dev->rtnl_link_state = RTNL_LINK_INITIALIZING; 1572 dev->rtnl_link_state = RTNL_LINK_INITIALIZING;
1573 dev->real_num_tx_queues = real_num_queues; 1573 dev->real_num_tx_queues = real_num_queues;
1574 1574
1575 if (strchr(dev->name, '%')) {
1576 err = dev_alloc_name(dev, dev->name);
1577 if (err < 0)
1578 goto err_free;
1579 }
1580
1581 if (tb[IFLA_MTU]) 1575 if (tb[IFLA_MTU])
1582 dev->mtu = nla_get_u32(tb[IFLA_MTU]); 1576 dev->mtu = nla_get_u32(tb[IFLA_MTU]);
1583 if (tb[IFLA_ADDRESS]) 1577 if (tb[IFLA_ADDRESS])
@@ -1597,8 +1591,6 @@ struct net_device *rtnl_create_link(struct net *src_net, struct net *net,
1597 1591
1598 return dev; 1592 return dev;
1599 1593
1600err_free:
1601 free_netdev(dev);
1602err: 1594err:
1603 return ERR_PTR(err); 1595 return ERR_PTR(err);
1604} 1596}