diff options
| author | Jiri Pirko <jpirko@redhat.com> | 2011-04-30 01:21:32 +0000 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2011-05-05 10:57:45 -0700 | 
| commit | 1c5cae815d19ffe02bdfda1260949ef2b1806171 (patch) | |
| tree | d47a73c05afacd21985abb8df9862136385c58f0 /net/core/dev.c | |
| parent | e8920674979705392abc4db4ebbe78feb68a4da1 (diff) | |
| download | olio-linux-3.10-1c5cae815d19ffe02bdfda1260949ef2b1806171.tar.xz olio-linux-3.10-1c5cae815d19ffe02bdfda1260949ef2b1806171.zip  | |
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>
Diffstat (limited to 'net/core/dev.c')
| -rw-r--r-- | net/core/dev.c | 24 | 
1 files changed, 6 insertions, 18 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index e95dc30110e..3b79bad3d02 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)  }  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; @@ -958,7 +958,7 @@ static int dev_get_valid_name(struct net_device *dev, const char *name, bool fmt  	if (!dev_valid_name(name))  		return -EINVAL; -	if (fmt && strchr(name, '%')) +	if (strchr(name, '%'))  		return dev_alloc_name(dev, name);  	else if (__dev_get_by_name(net, name))  		return -EEXIST; @@ -995,7 +995,7 @@ int dev_change_name(struct net_device *dev, const char *newname)  	memcpy(oldname, dev->name, IFNAMSIZ); -	err = dev_get_valid_name(dev, newname, 1); +	err = dev_get_valid_name(dev, newname);  	if (err < 0)  		return err; @@ -5420,8 +5420,8 @@ int register_netdevice(struct net_device *dev)  		}  	} -	ret = dev_get_valid_name(dev, dev->name, 0); -	if (ret) +	ret = dev_get_valid_name(dev, dev->name); +	if (ret < 0)  		goto err_uninit;  	dev->ifindex = dev_new_index(net); @@ -5562,19 +5562,7 @@ int register_netdev(struct net_device *dev)  	int err;  	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); -out:  	rtnl_unlock();  	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 */  		if (!pat)  			goto out; -		if (dev_get_valid_name(dev, pat, 1)) +		if (dev_get_valid_name(dev, pat) < 0)  			goto out;  	}  |