diff options
Diffstat (limited to 'drivers/net/usb/usbnet.c')
| -rw-r--r-- | drivers/net/usb/usbnet.c | 17 | 
1 files changed, 8 insertions, 9 deletions
diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c index 3a6770a65d78..449835f4331e 100644 --- a/drivers/net/usb/usbnet.c +++ b/drivers/net/usb/usbnet.c @@ -160,20 +160,19 @@ EXPORT_SYMBOL_GPL(usbnet_get_endpoints);  int usbnet_get_ethernet_addr(struct usbnet *dev, int iMACAddress)  { -	int 		tmp, i; +	int 		tmp = -1, ret;  	unsigned char	buf [13]; -	tmp = usb_string(dev->udev, iMACAddress, buf, sizeof buf); -	if (tmp != 12) { +	ret = usb_string(dev->udev, iMACAddress, buf, sizeof buf); +	if (ret == 12) +		tmp = hex2bin(dev->net->dev_addr, buf, 6); +	if (tmp < 0) {  		dev_dbg(&dev->udev->dev,  			"bad MAC string %d fetch, %d\n", iMACAddress, tmp); -		if (tmp >= 0) -			tmp = -EINVAL; -		return tmp; +		if (ret >= 0) +			ret = -EINVAL; +		return ret;  	} -	for (i = tmp = 0; i < 6; i++, tmp += 2) -		dev->net->dev_addr [i] = -			(hex_to_bin(buf[tmp]) << 4) + hex_to_bin(buf[tmp + 1]);  	return 0;  }  EXPORT_SYMBOL_GPL(usbnet_get_ethernet_addr);  | 

