diff options
Diffstat (limited to 'drivers/isdn/hisax/st5481_usb.c')
| -rw-r--r-- | drivers/isdn/hisax/st5481_usb.c | 12 | 
1 files changed, 10 insertions, 2 deletions
| diff --git a/drivers/isdn/hisax/st5481_usb.c b/drivers/isdn/hisax/st5481_usb.c index 017c67ea3f4..ead0a4fb744 100644 --- a/drivers/isdn/hisax/st5481_usb.c +++ b/drivers/isdn/hisax/st5481_usb.c @@ -294,13 +294,13 @@ int st5481_setup_usb(struct st5481_adapter *adapter)  	// Allocate URBs and buffers for interrupt endpoint  	urb = usb_alloc_urb(0, GFP_KERNEL);  	if (!urb) { -		return -ENOMEM; +		goto err1;  	}  	intr->urb = urb;  	buf = kmalloc(INT_PKT_SIZE, GFP_KERNEL);  	if (!buf) { -		return -ENOMEM; +		goto err2;  	}  	endpoint = &altsetting->endpoint[EP_INT-1]; @@ -313,6 +313,14 @@ int st5481_setup_usb(struct st5481_adapter *adapter)  			 endpoint->desc.bInterval);  	return 0; +err2: +	usb_free_urb(intr->urb); +	intr->urb = NULL; +err1: +	usb_free_urb(ctrl->urb); +	ctrl->urb = NULL; + +	return -ENOMEM;  }  /* |