diff options
Diffstat (limited to 'drivers/net/irda/mcs7780.c')
| -rw-r--r-- | drivers/net/irda/mcs7780.c | 41 | 
1 files changed, 23 insertions, 18 deletions
diff --git a/drivers/net/irda/mcs7780.c b/drivers/net/irda/mcs7780.c index f07c340990d..16f8ffb50e0 100644 --- a/drivers/net/irda/mcs7780.c +++ b/drivers/net/irda/mcs7780.c @@ -48,7 +48,6 @@  #include <linux/kernel.h>  #include <linux/types.h>  #include <linux/errno.h> -#include <linux/init.h>  #include <linux/slab.h>  #include <linux/usb.h>  #include <linux/device.h> @@ -191,8 +190,8 @@ static inline int mcs_setup_transceiver_vishay(struct mcs_cb *mcs)  		goto error;  	ret = 0; -	error: -		return ret; +error: +	return ret;  }  /* Setup a communication between mcs7780 and agilent chip. */ @@ -501,8 +500,11 @@ static inline int mcs_setup_urbs(struct mcs_cb *mcs)  		return 0;  	mcs->rx_urb = usb_alloc_urb(0, GFP_KERNEL); -	if (!mcs->rx_urb) +	if (!mcs->rx_urb) { +		usb_free_urb(mcs->tx_urb); +		mcs->tx_urb = NULL;  		return 0; +	}  	return 1;  } @@ -643,9 +645,9 @@ static int mcs_speed_change(struct mcs_cb *mcs)  	ret = mcs_set_reg(mcs, MCS_MODE_REG, rval);  	mcs->speed = mcs->new_speed; -	error: -		mcs->new_speed = 0; -		return ret; +error: +	mcs->new_speed = 0; +	return ret;  }  /* Ioctl calls not supported at this time.  Can be an area of future work. */ @@ -738,17 +740,20 @@ static int mcs_net_open(struct net_device *netdev)  	ret = mcs_receive_start(mcs);  	if (ret) -		goto error3; +		goto error4;  	netif_start_queue(netdev);  	return 0; -	error3: -		irlap_close(mcs->irlap); -	error2: -		kfree_skb(mcs->rx_buff.skb); -	error1: -		return ret; +error4: +	usb_free_urb(mcs->rx_urb); +	usb_free_urb(mcs->tx_urb); +error3: +	irlap_close(mcs->irlap); +error2: +	kfree_skb(mcs->rx_buff.skb); +error1: +	return ret;  }  /* Receive callback function.  */ @@ -946,11 +951,11 @@ static int mcs_probe(struct usb_interface *intf,  	usb_set_intfdata(intf, mcs);  	return 0; -	error2: -		free_netdev(ndev); +error2: +	free_netdev(ndev); -	error1: -		return ret; +error1: +	return ret;  }  /* The current device is removed, the USB layer tells us to shut down. */  | 
