Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: call dev_alloc_name from register_netdevice

Force dev_alloc_name() to be called from register_netdevice() by
dev_get_valid_name(). That allows to remove multiple explicit
dev_alloc_name() calls.

The possibility to call dev_alloc_name in advance remains.

This also fixes veth creation regresion caused by
84c49d8c3e4abefb0a41a77b25aa37ebe8d6b743

Signed-off-by: Jiri Pirko <jpirko@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Jiri Pirko and committed by
David S. Miller
1c5cae81 e8920674

+12 -134
-10
drivers/ieee802154/fakehard.c
··· 393 393 priv = netdev_priv(dev); 394 394 priv->phy = phy; 395 395 396 - /* 397 - * If the name is a format string the caller wants us to do a 398 - * name allocation. 399 - */ 400 - if (strchr(dev->name, '%')) { 401 - err = dev_alloc_name(dev, dev->name); 402 - if (err < 0) 403 - goto out; 404 - } 405 - 406 396 wpan_phy_set_dev(phy, &pdev->dev); 407 397 SET_NETDEV_DEV(dev, &phy->dev); 408 398
+3 -18
drivers/net/bonding/bond_main.c
··· 4917 4917 4918 4918 rtnl_lock(); 4919 4919 4920 - bond_dev = alloc_netdev_mq(sizeof(struct bonding), name ? name : "", 4921 - bond_setup, tx_queues); 4920 + bond_dev = alloc_netdev_mq(sizeof(struct bonding), 4921 + name ? name : "bond%d", 4922 + bond_setup, tx_queues); 4922 4923 if (!bond_dev) { 4923 4924 pr_err("%s: eek! can't alloc netdev!\n", name); 4924 4925 rtnl_unlock(); ··· 4929 4928 dev_net_set(bond_dev, net); 4930 4929 bond_dev->rtnl_link_ops = &bond_link_ops; 4931 4930 4932 - if (!name) { 4933 - res = dev_alloc_name(bond_dev, "bond%d"); 4934 - if (res < 0) 4935 - goto out; 4936 - } else { 4937 - /* 4938 - * If we're given a name to register 4939 - * we need to ensure that its not already 4940 - * registered 4941 - */ 4942 - res = -EEXIST; 4943 - if (__dev_get_by_name(net, name) != NULL) 4944 - goto out; 4945 - } 4946 - 4947 4931 res = register_netdevice(bond_dev); 4948 4932 4949 4933 netif_carrier_off(bond_dev); 4950 4934 4951 - out: 4952 4935 rtnl_unlock(); 4953 4936 if (res < 0) 4954 4937 bond_destructor(bond_dev);
-4
drivers/net/dummy.c
··· 168 168 if (!dev_dummy) 169 169 return -ENOMEM; 170 170 171 - err = dev_alloc_name(dev_dummy, dev_dummy->name); 172 - if (err < 0) 173 - goto err; 174 - 175 171 dev_dummy->rtnl_link_ops = &dummy_link_ops; 176 172 err = register_netdevice(dev_dummy); 177 173 if (err < 0)
-4
drivers/net/hamradio/bpqether.c
··· 516 516 memcpy(bpq->dest_addr, bcast_addr, sizeof(bpq_eth_addr)); 517 517 memcpy(bpq->acpt_addr, bcast_addr, sizeof(bpq_eth_addr)); 518 518 519 - err = dev_alloc_name(ndev, ndev->name); 520 - if (err < 0) 521 - goto error; 522 - 523 519 err = register_netdevice(ndev); 524 520 if (err) 525 521 goto error;
-4
drivers/net/ifb.c
··· 233 233 if (!dev_ifb) 234 234 return -ENOMEM; 235 235 236 - err = dev_alloc_name(dev_ifb, dev_ifb->name); 237 - if (err < 0) 238 - goto err; 239 - 240 236 dev_ifb->rtnl_link_ops = &ifb_link_ops; 241 237 err = register_netdevice(dev_ifb); 242 238 if (err < 0)
-6
drivers/net/tun.c
··· 1099 1099 1100 1100 tun_net_init(dev); 1101 1101 1102 - if (strchr(dev->name, '%')) { 1103 - err = dev_alloc_name(dev, dev->name); 1104 - if (err < 0) 1105 - goto err_free_sk; 1106 - } 1107 - 1108 1102 dev->hw_features = NETIF_F_SG | NETIF_F_FRAGLIST | 1109 1103 TUN_USER_FEATURES; 1110 1104 dev->features = dev->hw_features;
-4
drivers/net/wan/dlci.c
··· 341 341 } 342 342 } 343 343 344 - err = dev_alloc_name(master, master->name); 345 - if (err < 0) 346 - goto err2; 347 - 348 344 *(short *)(master->dev_addr) = dlci->dlci; 349 345 350 346 dlp = netdev_priv(master);
+1 -8
drivers/net/wan/hdlc_fr.c
··· 1070 1070 hdlc_device *hdlc = dev_to_hdlc(frad); 1071 1071 pvc_device *pvc; 1072 1072 struct net_device *dev; 1073 - int result, used; 1073 + int used; 1074 1074 1075 1075 if ((pvc = add_pvc(frad, dlci)) == NULL) { 1076 1076 printk(KERN_WARNING "%s: Memory squeeze on fr_add_pvc()\n", ··· 1105 1105 dev->mtu = HDLC_MAX_MTU; 1106 1106 dev->tx_queue_len = 0; 1107 1107 dev->ml_priv = pvc; 1108 - 1109 - result = dev_alloc_name(dev, dev->name); 1110 - if (result < 0) { 1111 - free_netdev(dev); 1112 - delete_unused_pvcs(hdlc); 1113 - return result; 1114 - } 1115 1108 1116 1109 if (register_netdevice(dev) != 0) { 1117 1110 free_netdev(dev);
-4
drivers/net/wan/lapbether.c
··· 338 338 dev_hold(dev); 339 339 lapbeth->ethdev = dev; 340 340 341 - rc = dev_alloc_name(ndev, ndev->name); 342 - if (rc < 0) 343 - goto fail; 344 - 345 341 rc = -EIO; 346 342 if (register_netdevice(ndev)) 347 343 goto fail;
+1 -6
drivers/net/wireless/hostap/hostap_main.c
··· 79 79 if (!rtnl_locked) 80 80 rtnl_lock(); 81 81 82 - ret = 0; 83 - if (strchr(dev->name, '%')) 84 - ret = dev_alloc_name(dev, dev->name); 85 - 86 82 SET_NETDEV_DEV(dev, mdev->dev.parent); 87 - if (ret >= 0) 88 - ret = register_netdevice(dev); 83 + ret = register_netdevice(dev); 89 84 90 85 if (!rtnl_locked) 91 86 rtnl_unlock();
+1 -10
drivers/net/wireless/mac80211_hwsim.c
··· 1515 1515 if (hwsim_mon == NULL) 1516 1516 goto failed; 1517 1517 1518 - rtnl_lock(); 1519 - 1520 - err = dev_alloc_name(hwsim_mon, hwsim_mon->name); 1518 + err = register_netdev(hwsim_mon); 1521 1519 if (err < 0) 1522 1520 goto failed_mon; 1523 - 1524 - 1525 - err = register_netdevice(hwsim_mon); 1526 - if (err < 0) 1527 - goto failed_mon; 1528 - 1529 - rtnl_unlock(); 1530 1521 1531 1522 return 0; 1532 1523
-4
drivers/net/wireless/mwifiex/main.c
··· 706 706 dev_err(adapter->dev, "no memory available for netdevice\n"); 707 707 goto error; 708 708 } 709 - if (dev_alloc_name(dev, dev->name)) { 710 - dev_err(adapter->dev, "unable to alloc name for netdevice\n"); 711 - goto error; 712 - } 713 709 714 710 if (mwifiex_register_cfg80211(dev, adapter->priv[bss_index]->curr_addr, 715 711 adapter->priv[bss_index]) != 0) {
-2
drivers/s390/net/netiucv.c
··· 1994 1994 netiucv_setup_netdevice); 1995 1995 if (!dev) 1996 1996 return NULL; 1997 - if (dev_alloc_name(dev, dev->name) < 0) 1998 - goto out_netdev; 1999 1997 2000 1998 privptr = netdev_priv(dev); 2001 1999 privptr->fsm = init_fsm("netiucvdev", dev_state_names,
+6 -18
net/core/dev.c
··· 948 948 } 949 949 EXPORT_SYMBOL(dev_alloc_name); 950 950 951 - static int dev_get_valid_name(struct net_device *dev, const char *name, bool fmt) 951 + static int dev_get_valid_name(struct net_device *dev, const char *name) 952 952 { 953 953 struct net *net; 954 954 ··· 958 958 if (!dev_valid_name(name)) 959 959 return -EINVAL; 960 960 961 - if (fmt && strchr(name, '%')) 961 + if (strchr(name, '%')) 962 962 return dev_alloc_name(dev, name); 963 963 else if (__dev_get_by_name(net, name)) 964 964 return -EEXIST; ··· 995 995 996 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 999 if (err < 0) 1000 1000 return err; 1001 1001 ··· 5420 5420 } 5421 5421 } 5422 5422 5423 - ret = dev_get_valid_name(dev, dev->name, 0); 5424 - if (ret) 5423 + ret = dev_get_valid_name(dev, dev->name); 5424 + if (ret < 0) 5425 5425 goto err_uninit; 5426 5426 5427 5427 dev->ifindex = dev_new_index(net); ··· 5562 5562 int err; 5563 5563 5564 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 5565 err = register_netdevice(dev); 5577 - out: 5578 5566 rtnl_unlock(); 5579 5567 return err; 5580 5568 } ··· 6044 6056 /* We get here if we can't use the current device name */ 6045 6057 if (!pat) 6046 6058 goto out; 6047 - if (dev_get_valid_name(dev, pat, 1)) 6059 + if (dev_get_valid_name(dev, pat) < 0) 6048 6060 goto out; 6049 6061 } 6050 6062
-8
net/core/rtnetlink.c
··· 1572 1572 dev->rtnl_link_state = RTNL_LINK_INITIALIZING; 1573 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 1575 if (tb[IFLA_MTU]) 1582 1576 dev->mtu = nla_get_u32(tb[IFLA_MTU]); 1583 1577 if (tb[IFLA_ADDRESS]) ··· 1591 1597 1592 1598 return dev; 1593 1599 1594 - err_free: 1595 - free_netdev(dev); 1596 1600 err: 1597 1601 return ERR_PTR(err); 1598 1602 }
-5
net/ipv4/ip_gre.c
··· 413 413 414 414 dev_net_set(dev, net); 415 415 416 - if (strchr(name, '%')) { 417 - if (dev_alloc_name(dev, name) < 0) 418 - goto failed_free; 419 - } 420 - 421 416 nt = netdev_priv(dev); 422 417 nt->parms = *parms; 423 418 dev->rtnl_link_ops = &ipgre_link_ops;
-5
net/ipv4/ipip.c
··· 276 276 277 277 dev_net_set(dev, net); 278 278 279 - if (strchr(name, '%')) { 280 - if (dev_alloc_name(dev, name) < 0) 281 - goto failed_free; 282 - } 283 - 284 279 nt = netdev_priv(dev); 285 280 nt->parms = *parms; 286 281
-5
net/ipv6/ip6_tunnel.c
··· 280 280 281 281 dev_net_set(dev, net); 282 282 283 - if (strchr(name, '%')) { 284 - if (dev_alloc_name(dev, name) < 0) 285 - goto failed_free; 286 - } 287 - 288 283 t = netdev_priv(dev); 289 284 t->parms = *p; 290 285 err = ip6_tnl_dev_init(dev);
-5
net/ipv6/sit.c
··· 250 250 251 251 dev_net_set(dev, net); 252 252 253 - if (strchr(name, '%')) { 254 - if (dev_alloc_name(dev, name) < 0) 255 - goto failed_free; 256 - } 257 - 258 253 nt = netdev_priv(dev); 259 254 260 255 nt->parms = *parms;
-4
net/mac80211/iface.c
··· 1144 1144 + IEEE80211_ENCRYPT_HEADROOM; 1145 1145 ndev->needed_tailroom = IEEE80211_ENCRYPT_TAILROOM; 1146 1146 1147 - ret = dev_alloc_name(ndev, ndev->name); 1148 - if (ret < 0) 1149 - goto fail; 1150 - 1151 1147 ieee80211_assign_perm_addr(local, ndev, type); 1152 1148 memcpy(ndev->dev_addr, ndev->perm_addr, ETH_ALEN); 1153 1149 SET_NETDEV_DEV(ndev, wiphy_dev(local->hw.wiphy));