forked from mirrors/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
84c49d8c3e
Signed-off-by: Jiri Pirko <jpirko@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
			
			
This commit is contained in:
		
							parent
							
								
									e892067497
								
							
						
					
					
						commit
						1c5cae815d
					
				
					 20 changed files with 12 additions and 134 deletions
				
			
		| 
						 | 
					@ -393,16 +393,6 @@ static int __devinit ieee802154fake_probe(struct platform_device *pdev)
 | 
				
			||||||
	priv = netdev_priv(dev);
 | 
						priv = netdev_priv(dev);
 | 
				
			||||||
	priv->phy = phy;
 | 
						priv->phy = phy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/*
 | 
					 | 
				
			||||||
	 * If the name is a format string the caller wants us to do a
 | 
					 | 
				
			||||||
	 * name allocation.
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	if (strchr(dev->name, '%')) {
 | 
					 | 
				
			||||||
		err = dev_alloc_name(dev, dev->name);
 | 
					 | 
				
			||||||
		if (err < 0)
 | 
					 | 
				
			||||||
			goto out;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	wpan_phy_set_dev(phy, &pdev->dev);
 | 
						wpan_phy_set_dev(phy, &pdev->dev);
 | 
				
			||||||
	SET_NETDEV_DEV(dev, &phy->dev);
 | 
						SET_NETDEV_DEV(dev, &phy->dev);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4917,7 +4917,8 @@ int bond_create(struct net *net, const char *name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rtnl_lock();
 | 
						rtnl_lock();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bond_dev = alloc_netdev_mq(sizeof(struct bonding), name ? name : "",
 | 
						bond_dev = alloc_netdev_mq(sizeof(struct bonding),
 | 
				
			||||||
 | 
									   name ? name : "bond%d",
 | 
				
			||||||
				   bond_setup, tx_queues);
 | 
									   bond_setup, tx_queues);
 | 
				
			||||||
	if (!bond_dev) {
 | 
						if (!bond_dev) {
 | 
				
			||||||
		pr_err("%s: eek! can't alloc netdev!\n", name);
 | 
							pr_err("%s: eek! can't alloc netdev!\n", name);
 | 
				
			||||||
| 
						 | 
					@ -4928,26 +4929,10 @@ int bond_create(struct net *net, const char *name)
 | 
				
			||||||
	dev_net_set(bond_dev, net);
 | 
						dev_net_set(bond_dev, net);
 | 
				
			||||||
	bond_dev->rtnl_link_ops = &bond_link_ops;
 | 
						bond_dev->rtnl_link_ops = &bond_link_ops;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!name) {
 | 
					 | 
				
			||||||
		res = dev_alloc_name(bond_dev, "bond%d");
 | 
					 | 
				
			||||||
		if (res < 0)
 | 
					 | 
				
			||||||
			goto out;
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		/*
 | 
					 | 
				
			||||||
		 * If we're given a name to register
 | 
					 | 
				
			||||||
		 * we need to ensure that its not already
 | 
					 | 
				
			||||||
		 * registered
 | 
					 | 
				
			||||||
		 */
 | 
					 | 
				
			||||||
		res = -EEXIST;
 | 
					 | 
				
			||||||
		if (__dev_get_by_name(net, name) != NULL)
 | 
					 | 
				
			||||||
			goto out;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	res = register_netdevice(bond_dev);
 | 
						res = register_netdevice(bond_dev);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	netif_carrier_off(bond_dev);
 | 
						netif_carrier_off(bond_dev);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
out:
 | 
					 | 
				
			||||||
	rtnl_unlock();
 | 
						rtnl_unlock();
 | 
				
			||||||
	if (res < 0)
 | 
						if (res < 0)
 | 
				
			||||||
		bond_destructor(bond_dev);
 | 
							bond_destructor(bond_dev);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -168,10 +168,6 @@ static int __init dummy_init_one(void)
 | 
				
			||||||
	if (!dev_dummy)
 | 
						if (!dev_dummy)
 | 
				
			||||||
		return -ENOMEM;
 | 
							return -ENOMEM;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = dev_alloc_name(dev_dummy, dev_dummy->name);
 | 
					 | 
				
			||||||
	if (err < 0)
 | 
					 | 
				
			||||||
		goto err;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	dev_dummy->rtnl_link_ops = &dummy_link_ops;
 | 
						dev_dummy->rtnl_link_ops = &dummy_link_ops;
 | 
				
			||||||
	err = register_netdevice(dev_dummy);
 | 
						err = register_netdevice(dev_dummy);
 | 
				
			||||||
	if (err < 0)
 | 
						if (err < 0)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -516,10 +516,6 @@ static int bpq_new_device(struct net_device *edev)
 | 
				
			||||||
	memcpy(bpq->dest_addr, bcast_addr, sizeof(bpq_eth_addr));
 | 
						memcpy(bpq->dest_addr, bcast_addr, sizeof(bpq_eth_addr));
 | 
				
			||||||
	memcpy(bpq->acpt_addr, bcast_addr, sizeof(bpq_eth_addr));
 | 
						memcpy(bpq->acpt_addr, bcast_addr, sizeof(bpq_eth_addr));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = dev_alloc_name(ndev, ndev->name);
 | 
					 | 
				
			||||||
	if (err < 0) 
 | 
					 | 
				
			||||||
		goto error;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	err = register_netdevice(ndev);
 | 
						err = register_netdevice(ndev);
 | 
				
			||||||
	if (err)
 | 
						if (err)
 | 
				
			||||||
		goto error;
 | 
							goto error;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -233,10 +233,6 @@ static int __init ifb_init_one(int index)
 | 
				
			||||||
	if (!dev_ifb)
 | 
						if (!dev_ifb)
 | 
				
			||||||
		return -ENOMEM;
 | 
							return -ENOMEM;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = dev_alloc_name(dev_ifb, dev_ifb->name);
 | 
					 | 
				
			||||||
	if (err < 0)
 | 
					 | 
				
			||||||
		goto err;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	dev_ifb->rtnl_link_ops = &ifb_link_ops;
 | 
						dev_ifb->rtnl_link_ops = &ifb_link_ops;
 | 
				
			||||||
	err = register_netdevice(dev_ifb);
 | 
						err = register_netdevice(dev_ifb);
 | 
				
			||||||
	if (err < 0)
 | 
						if (err < 0)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1099,12 +1099,6 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		tun_net_init(dev);
 | 
							tun_net_init(dev);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (strchr(dev->name, '%')) {
 | 
					 | 
				
			||||||
			err = dev_alloc_name(dev, dev->name);
 | 
					 | 
				
			||||||
			if (err < 0)
 | 
					 | 
				
			||||||
				goto err_free_sk;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		dev->hw_features = NETIF_F_SG | NETIF_F_FRAGLIST |
 | 
							dev->hw_features = NETIF_F_SG | NETIF_F_FRAGLIST |
 | 
				
			||||||
			TUN_USER_FEATURES;
 | 
								TUN_USER_FEATURES;
 | 
				
			||||||
		dev->features = dev->hw_features;
 | 
							dev->features = dev->hw_features;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -341,10 +341,6 @@ static int dlci_add(struct dlci_add *dlci)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = dev_alloc_name(master, master->name);
 | 
					 | 
				
			||||||
	if (err < 0)
 | 
					 | 
				
			||||||
		goto err2;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	*(short *)(master->dev_addr) = dlci->dlci;
 | 
						*(short *)(master->dev_addr) = dlci->dlci;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dlp = netdev_priv(master);
 | 
						dlp = netdev_priv(master);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1070,7 +1070,7 @@ static int fr_add_pvc(struct net_device *frad, unsigned int dlci, int type)
 | 
				
			||||||
	hdlc_device *hdlc = dev_to_hdlc(frad);
 | 
						hdlc_device *hdlc = dev_to_hdlc(frad);
 | 
				
			||||||
	pvc_device *pvc;
 | 
						pvc_device *pvc;
 | 
				
			||||||
	struct net_device *dev;
 | 
						struct net_device *dev;
 | 
				
			||||||
	int result, used;
 | 
						int used;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((pvc = add_pvc(frad, dlci)) == NULL) {
 | 
						if ((pvc = add_pvc(frad, dlci)) == NULL) {
 | 
				
			||||||
		printk(KERN_WARNING "%s: Memory squeeze on fr_add_pvc()\n",
 | 
							printk(KERN_WARNING "%s: Memory squeeze on fr_add_pvc()\n",
 | 
				
			||||||
| 
						 | 
					@ -1106,13 +1106,6 @@ static int fr_add_pvc(struct net_device *frad, unsigned int dlci, int type)
 | 
				
			||||||
	dev->tx_queue_len = 0;
 | 
						dev->tx_queue_len = 0;
 | 
				
			||||||
	dev->ml_priv = pvc;
 | 
						dev->ml_priv = pvc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	result = dev_alloc_name(dev, dev->name);
 | 
					 | 
				
			||||||
	if (result < 0) {
 | 
					 | 
				
			||||||
		free_netdev(dev);
 | 
					 | 
				
			||||||
		delete_unused_pvcs(hdlc);
 | 
					 | 
				
			||||||
		return result;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (register_netdevice(dev) != 0) {
 | 
						if (register_netdevice(dev) != 0) {
 | 
				
			||||||
		free_netdev(dev);
 | 
							free_netdev(dev);
 | 
				
			||||||
		delete_unused_pvcs(hdlc);
 | 
							delete_unused_pvcs(hdlc);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -338,10 +338,6 @@ static int lapbeth_new_device(struct net_device *dev)
 | 
				
			||||||
	dev_hold(dev);
 | 
						dev_hold(dev);
 | 
				
			||||||
	lapbeth->ethdev = dev;
 | 
						lapbeth->ethdev = dev;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rc = dev_alloc_name(ndev, ndev->name);
 | 
					 | 
				
			||||||
	if (rc < 0) 
 | 
					 | 
				
			||||||
		goto fail;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	rc = -EIO;
 | 
						rc = -EIO;
 | 
				
			||||||
	if (register_netdevice(ndev))
 | 
						if (register_netdevice(ndev))
 | 
				
			||||||
		goto fail;
 | 
							goto fail;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -79,12 +79,7 @@ struct net_device * hostap_add_interface(struct local_info *local,
 | 
				
			||||||
	if (!rtnl_locked)
 | 
						if (!rtnl_locked)
 | 
				
			||||||
		rtnl_lock();
 | 
							rtnl_lock();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ret = 0;
 | 
					 | 
				
			||||||
	if (strchr(dev->name, '%'))
 | 
					 | 
				
			||||||
		ret = dev_alloc_name(dev, dev->name);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	SET_NETDEV_DEV(dev, mdev->dev.parent);
 | 
						SET_NETDEV_DEV(dev, mdev->dev.parent);
 | 
				
			||||||
	if (ret >= 0)
 | 
					 | 
				
			||||||
	ret = register_netdevice(dev);
 | 
						ret = register_netdevice(dev);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!rtnl_locked)
 | 
						if (!rtnl_locked)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1515,19 +1515,10 @@ static int __init init_mac80211_hwsim(void)
 | 
				
			||||||
	if (hwsim_mon == NULL)
 | 
						if (hwsim_mon == NULL)
 | 
				
			||||||
		goto failed;
 | 
							goto failed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rtnl_lock();
 | 
						err = register_netdev(hwsim_mon);
 | 
				
			||||||
 | 
					 | 
				
			||||||
	err = dev_alloc_name(hwsim_mon, hwsim_mon->name);
 | 
					 | 
				
			||||||
	if (err < 0)
 | 
						if (err < 0)
 | 
				
			||||||
		goto failed_mon;
 | 
							goto failed_mon;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
	err = register_netdevice(hwsim_mon);
 | 
					 | 
				
			||||||
	if (err < 0)
 | 
					 | 
				
			||||||
		goto failed_mon;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	rtnl_unlock();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
failed_mon:
 | 
					failed_mon:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -706,10 +706,6 @@ static struct mwifiex_private *mwifiex_add_interface(
 | 
				
			||||||
		dev_err(adapter->dev, "no memory available for netdevice\n");
 | 
							dev_err(adapter->dev, "no memory available for netdevice\n");
 | 
				
			||||||
		goto error;
 | 
							goto error;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (dev_alloc_name(dev, dev->name)) {
 | 
					 | 
				
			||||||
		dev_err(adapter->dev, "unable to alloc name for netdevice\n");
 | 
					 | 
				
			||||||
		goto error;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (mwifiex_register_cfg80211(dev, adapter->priv[bss_index]->curr_addr,
 | 
						if (mwifiex_register_cfg80211(dev, adapter->priv[bss_index]->curr_addr,
 | 
				
			||||||
				      adapter->priv[bss_index]) != 0) {
 | 
									      adapter->priv[bss_index]) != 0) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1994,8 +1994,6 @@ static struct net_device *netiucv_init_netdevice(char *username)
 | 
				
			||||||
			   netiucv_setup_netdevice);
 | 
								   netiucv_setup_netdevice);
 | 
				
			||||||
	if (!dev)
 | 
						if (!dev)
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	if (dev_alloc_name(dev, dev->name) < 0)
 | 
					 | 
				
			||||||
		goto out_netdev;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	privptr = netdev_priv(dev);
 | 
						privptr = netdev_priv(dev);
 | 
				
			||||||
	privptr->fsm = init_fsm("netiucvdev", dev_state_names,
 | 
						privptr->fsm = init_fsm("netiucvdev", dev_state_names,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -948,7 +948,7 @@ int dev_alloc_name(struct net_device *dev, const char *name)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
EXPORT_SYMBOL(dev_alloc_name);
 | 
					EXPORT_SYMBOL(dev_alloc_name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int dev_get_valid_name(struct net_device *dev, const char *name, bool fmt)
 | 
					static int dev_get_valid_name(struct net_device *dev, const char *name)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct net *net;
 | 
						struct net *net;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -958,7 +958,7 @@ static int dev_get_valid_name(struct net_device *dev, const char *name, bool fmt
 | 
				
			||||||
	if (!dev_valid_name(name))
 | 
						if (!dev_valid_name(name))
 | 
				
			||||||
		return -EINVAL;
 | 
							return -EINVAL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (fmt && strchr(name, '%'))
 | 
						if (strchr(name, '%'))
 | 
				
			||||||
		return dev_alloc_name(dev, name);
 | 
							return dev_alloc_name(dev, name);
 | 
				
			||||||
	else if (__dev_get_by_name(net, name))
 | 
						else if (__dev_get_by_name(net, name))
 | 
				
			||||||
		return -EEXIST;
 | 
							return -EEXIST;
 | 
				
			||||||
| 
						 | 
					@ -995,7 +995,7 @@ int dev_change_name(struct net_device *dev, const char *newname)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	memcpy(oldname, dev->name, IFNAMSIZ);
 | 
						memcpy(oldname, dev->name, IFNAMSIZ);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = dev_get_valid_name(dev, newname, 1);
 | 
						err = dev_get_valid_name(dev, newname);
 | 
				
			||||||
	if (err < 0)
 | 
						if (err < 0)
 | 
				
			||||||
		return err;
 | 
							return err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5420,8 +5420,8 @@ int register_netdevice(struct net_device *dev)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ret = dev_get_valid_name(dev, dev->name, 0);
 | 
						ret = dev_get_valid_name(dev, dev->name);
 | 
				
			||||||
	if (ret)
 | 
						if (ret < 0)
 | 
				
			||||||
		goto err_uninit;
 | 
							goto err_uninit;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dev->ifindex = dev_new_index(net);
 | 
						dev->ifindex = dev_new_index(net);
 | 
				
			||||||
| 
						 | 
					@ -5562,19 +5562,7 @@ int register_netdev(struct net_device *dev)
 | 
				
			||||||
	int err;
 | 
						int err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rtnl_lock();
 | 
						rtnl_lock();
 | 
				
			||||||
 | 
					 | 
				
			||||||
	/*
 | 
					 | 
				
			||||||
	 * If the name is a format string the caller wants us to do a
 | 
					 | 
				
			||||||
	 * name allocation.
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	if (strchr(dev->name, '%')) {
 | 
					 | 
				
			||||||
		err = dev_alloc_name(dev, dev->name);
 | 
					 | 
				
			||||||
		if (err < 0)
 | 
					 | 
				
			||||||
			goto out;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	err = register_netdevice(dev);
 | 
						err = register_netdevice(dev);
 | 
				
			||||||
out:
 | 
					 | 
				
			||||||
	rtnl_unlock();
 | 
						rtnl_unlock();
 | 
				
			||||||
	return err;
 | 
						return err;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -6056,7 +6044,7 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char
 | 
				
			||||||
		/* We get here if we can't use the current device name */
 | 
							/* We get here if we can't use the current device name */
 | 
				
			||||||
		if (!pat)
 | 
							if (!pat)
 | 
				
			||||||
			goto out;
 | 
								goto out;
 | 
				
			||||||
		if (dev_get_valid_name(dev, pat, 1))
 | 
							if (dev_get_valid_name(dev, pat) < 0)
 | 
				
			||||||
			goto out;
 | 
								goto out;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1572,12 +1572,6 @@ struct net_device *rtnl_create_link(struct net *src_net, struct net *net,
 | 
				
			||||||
	dev->rtnl_link_state = RTNL_LINK_INITIALIZING;
 | 
						dev->rtnl_link_state = RTNL_LINK_INITIALIZING;
 | 
				
			||||||
	dev->real_num_tx_queues = real_num_queues;
 | 
						dev->real_num_tx_queues = real_num_queues;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (strchr(dev->name, '%')) {
 | 
					 | 
				
			||||||
		err = dev_alloc_name(dev, dev->name);
 | 
					 | 
				
			||||||
		if (err < 0)
 | 
					 | 
				
			||||||
			goto err_free;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (tb[IFLA_MTU])
 | 
						if (tb[IFLA_MTU])
 | 
				
			||||||
		dev->mtu = nla_get_u32(tb[IFLA_MTU]);
 | 
							dev->mtu = nla_get_u32(tb[IFLA_MTU]);
 | 
				
			||||||
	if (tb[IFLA_ADDRESS])
 | 
						if (tb[IFLA_ADDRESS])
 | 
				
			||||||
| 
						 | 
					@ -1597,8 +1591,6 @@ struct net_device *rtnl_create_link(struct net *src_net, struct net *net,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return dev;
 | 
						return dev;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
err_free:
 | 
					 | 
				
			||||||
	free_netdev(dev);
 | 
					 | 
				
			||||||
err:
 | 
					err:
 | 
				
			||||||
	return ERR_PTR(err);
 | 
						return ERR_PTR(err);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -413,11 +413,6 @@ static struct ip_tunnel *ipgre_tunnel_locate(struct net *net,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dev_net_set(dev, net);
 | 
						dev_net_set(dev, net);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (strchr(name, '%')) {
 | 
					 | 
				
			||||||
		if (dev_alloc_name(dev, name) < 0)
 | 
					 | 
				
			||||||
			goto failed_free;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	nt = netdev_priv(dev);
 | 
						nt = netdev_priv(dev);
 | 
				
			||||||
	nt->parms = *parms;
 | 
						nt->parms = *parms;
 | 
				
			||||||
	dev->rtnl_link_ops = &ipgre_link_ops;
 | 
						dev->rtnl_link_ops = &ipgre_link_ops;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -276,11 +276,6 @@ static struct ip_tunnel * ipip_tunnel_locate(struct net *net,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dev_net_set(dev, net);
 | 
						dev_net_set(dev, net);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (strchr(name, '%')) {
 | 
					 | 
				
			||||||
		if (dev_alloc_name(dev, name) < 0)
 | 
					 | 
				
			||||||
			goto failed_free;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	nt = netdev_priv(dev);
 | 
						nt = netdev_priv(dev);
 | 
				
			||||||
	nt->parms = *parms;
 | 
						nt->parms = *parms;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -280,11 +280,6 @@ static struct ip6_tnl *ip6_tnl_create(struct net *net, struct ip6_tnl_parm *p)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dev_net_set(dev, net);
 | 
						dev_net_set(dev, net);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (strchr(name, '%')) {
 | 
					 | 
				
			||||||
		if (dev_alloc_name(dev, name) < 0)
 | 
					 | 
				
			||||||
			goto failed_free;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	t = netdev_priv(dev);
 | 
						t = netdev_priv(dev);
 | 
				
			||||||
	t->parms = *p;
 | 
						t->parms = *p;
 | 
				
			||||||
	err = ip6_tnl_dev_init(dev);
 | 
						err = ip6_tnl_dev_init(dev);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -250,11 +250,6 @@ static struct ip_tunnel *ipip6_tunnel_locate(struct net *net,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dev_net_set(dev, net);
 | 
						dev_net_set(dev, net);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (strchr(name, '%')) {
 | 
					 | 
				
			||||||
		if (dev_alloc_name(dev, name) < 0)
 | 
					 | 
				
			||||||
			goto failed_free;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	nt = netdev_priv(dev);
 | 
						nt = netdev_priv(dev);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	nt->parms = *parms;
 | 
						nt->parms = *parms;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1144,10 +1144,6 @@ int ieee80211_if_add(struct ieee80211_local *local, const char *name,
 | 
				
			||||||
				+ IEEE80211_ENCRYPT_HEADROOM;
 | 
									+ IEEE80211_ENCRYPT_HEADROOM;
 | 
				
			||||||
	ndev->needed_tailroom = IEEE80211_ENCRYPT_TAILROOM;
 | 
						ndev->needed_tailroom = IEEE80211_ENCRYPT_TAILROOM;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ret = dev_alloc_name(ndev, ndev->name);
 | 
					 | 
				
			||||||
	if (ret < 0)
 | 
					 | 
				
			||||||
		goto fail;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	ieee80211_assign_perm_addr(local, ndev, type);
 | 
						ieee80211_assign_perm_addr(local, ndev, type);
 | 
				
			||||||
	memcpy(ndev->dev_addr, ndev->perm_addr, ETH_ALEN);
 | 
						memcpy(ndev->dev_addr, ndev->perm_addr, ETH_ALEN);
 | 
				
			||||||
	SET_NETDEV_DEV(ndev, wiphy_dev(local->hw.wiphy));
 | 
						SET_NETDEV_DEV(ndev, wiphy_dev(local->hw.wiphy));
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue