catc: Combine failure cleanup code in catc_probe()
commit d41149145f98fe26dcd0bfd1d6cc095e6e041418 upstream. Signed-off-by: Ben Hutchings <ben@decadent.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
a90604be51
commit
40531b26ba
@ -777,7 +777,7 @@ static int catc_probe(struct usb_interface *intf, const struct usb_device_id *id
|
||||
struct net_device *netdev;
|
||||
struct catc *catc;
|
||||
u8 broadcast[ETH_ALEN];
|
||||
int i, pktsz;
|
||||
int i, pktsz, ret;
|
||||
|
||||
if (usb_set_interface(usbdev,
|
||||
intf->altsetting->desc.bInterfaceNumber, 1)) {
|
||||
@ -812,12 +812,8 @@ static int catc_probe(struct usb_interface *intf, const struct usb_device_id *id
|
||||
if ((!catc->ctrl_urb) || (!catc->tx_urb) ||
|
||||
(!catc->rx_urb) || (!catc->irq_urb)) {
|
||||
dev_err(&intf->dev, "No free urbs available.\n");
|
||||
usb_free_urb(catc->ctrl_urb);
|
||||
usb_free_urb(catc->tx_urb);
|
||||
usb_free_urb(catc->rx_urb);
|
||||
usb_free_urb(catc->irq_urb);
|
||||
free_netdev(netdev);
|
||||
return -ENOMEM;
|
||||
ret = -ENOMEM;
|
||||
goto fail_free;
|
||||
}
|
||||
|
||||
/* The F5U011 has the same vendor/product as the netmate but a device version of 0x130 */
|
||||
@ -914,16 +910,21 @@ static int catc_probe(struct usb_interface *intf, const struct usb_device_id *id
|
||||
usb_set_intfdata(intf, catc);
|
||||
|
||||
SET_NETDEV_DEV(netdev, &intf->dev);
|
||||
if (register_netdev(netdev) != 0) {
|
||||
usb_set_intfdata(intf, NULL);
|
||||
usb_free_urb(catc->ctrl_urb);
|
||||
usb_free_urb(catc->tx_urb);
|
||||
usb_free_urb(catc->rx_urb);
|
||||
usb_free_urb(catc->irq_urb);
|
||||
free_netdev(netdev);
|
||||
return -EIO;
|
||||
}
|
||||
ret = register_netdev(netdev);
|
||||
if (ret)
|
||||
goto fail_clear_intfdata;
|
||||
|
||||
return 0;
|
||||
|
||||
fail_clear_intfdata:
|
||||
usb_set_intfdata(intf, NULL);
|
||||
fail_free:
|
||||
usb_free_urb(catc->ctrl_urb);
|
||||
usb_free_urb(catc->tx_urb);
|
||||
usb_free_urb(catc->rx_urb);
|
||||
usb_free_urb(catc->irq_urb);
|
||||
free_netdev(netdev);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void catc_disconnect(struct usb_interface *intf)
|
||||
|
Loading…
x
Reference in New Issue
Block a user