diff options
Diffstat (limited to 'net/netrom/nr_route.c')
| -rw-r--r-- | net/netrom/nr_route.c | 21 | 
1 files changed, 12 insertions, 9 deletions
diff --git a/net/netrom/nr_route.c b/net/netrom/nr_route.c index e943c16552a2..4eb1ac9a7679 100644 --- a/net/netrom/nr_route.c +++ b/net/netrom/nr_route.c @@ -630,23 +630,23 @@ out:  	return dev;  } -static ax25_digi *nr_call_to_digi(int ndigis, ax25_address *digipeaters) +static ax25_digi *nr_call_to_digi(ax25_digi *digi, int ndigis, +	ax25_address *digipeaters)  { -	static ax25_digi ax25_digi;  	int i;  	if (ndigis == 0)  		return NULL;  	for (i = 0; i < ndigis; i++) { -		ax25_digi.calls[i]    = digipeaters[i]; -		ax25_digi.repeated[i] = 0; +		digi->calls[i]    = digipeaters[i]; +		digi->repeated[i] = 0;  	} -	ax25_digi.ndigi      = ndigis; -	ax25_digi.lastrepeat = -1; +	digi->ndigi      = ndigis; +	digi->lastrepeat = -1; -	return &ax25_digi; +	return digi;  }  /* @@ -656,6 +656,7 @@ int nr_rt_ioctl(unsigned int cmd, void __user *arg)  {  	struct nr_route_struct nr_route;  	struct net_device *dev; +	ax25_digi digi;  	int ret;  	switch (cmd) { @@ -673,13 +674,15 @@ int nr_rt_ioctl(unsigned int cmd, void __user *arg)  			ret = nr_add_node(&nr_route.callsign,  				nr_route.mnemonic,  				&nr_route.neighbour, -				nr_call_to_digi(nr_route.ndigis, nr_route.digipeaters), +				nr_call_to_digi(&digi, nr_route.ndigis, +						nr_route.digipeaters),  				dev, nr_route.quality,  				nr_route.obs_count);  			break;  		case NETROM_NEIGH:  			ret = nr_add_neigh(&nr_route.callsign, -				nr_call_to_digi(nr_route.ndigis, nr_route.digipeaters), +				nr_call_to_digi(&digi, nr_route.ndigis, +						nr_route.digipeaters),  				dev, nr_route.quality);  			break;  		default:  | 
