Subject: Re: [PATCH] Don't create tunnels with '%' in name.

From: Patrick McHardy <[email-masked]>
Date: Thu, 21 Feb 2008 13:10:16 +0100

Pavel Emelyanov wrote:
> Four tunnel drivers (ip_gre, ipip, ip6_tunnel and sit) can
> receive a pre-defined name for a device from the userspace.
> Since these drivers call the register_netdevice() after this 
> (rtnl_lock is held), the device's name may contain a '%' 
> character.
> 
> Not sure how bad is this to have a device with a '%' in its
> name, but all the other places either use the register_netdev(),
> or explicitly call dev_alloc_name() before registering, i.e. 
> do not allow for such names.
> 
> Signed-off-by: Pavel Emelyanov <[email-masked]>
> 
> ---
> 
> diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
> index 63f6917..6b9744f 100644
> --- a/net/ipv4/ip_gre.c
> +++ b/net/ipv4/ip_gre.c
> @@ -274,19 +274,24 @@ static struct ip_tunnel * ipgre_tunnel_locate(struct ip_tunnel_parm *parms, int
>  	if (!dev)
>  	  return NULL;
>  
> +	if (strchr(name, '%')) {
> +		if (dev_alloc_name(dev, name) < 0)
> +			goto failed_free;
> +	}
> +

It would be nicer to replace the entire hand-made name
allocation to remove the 100 device limit.