@@ -776,7 +776,7 @@ static int catc_probe(struct usb_interface *intf, const struct usb_device_id *id
776
776
struct net_device * netdev ;
777
777
struct catc * catc ;
778
778
u8 broadcast [ETH_ALEN ];
779
- int i , pktsz ;
779
+ int i , pktsz , ret ;
780
780
781
781
if (usb_set_interface (usbdev ,
782
782
intf -> altsetting -> desc .bInterfaceNumber , 1 )) {
@@ -811,12 +811,8 @@ static int catc_probe(struct usb_interface *intf, const struct usb_device_id *id
811
811
if ((!catc -> ctrl_urb ) || (!catc -> tx_urb ) ||
812
812
(!catc -> rx_urb ) || (!catc -> irq_urb )) {
813
813
dev_err (& intf -> dev , "No free urbs available.\n" );
814
- usb_free_urb (catc -> ctrl_urb );
815
- usb_free_urb (catc -> tx_urb );
816
- usb_free_urb (catc -> rx_urb );
817
- usb_free_urb (catc -> irq_urb );
818
- free_netdev (netdev );
819
- return - ENOMEM ;
814
+ ret = - ENOMEM ;
815
+ goto fail_free ;
820
816
}
821
817
822
818
/* The F5U011 has the same vendor/product as the netmate but a device version of 0x130 */
@@ -913,16 +909,21 @@ static int catc_probe(struct usb_interface *intf, const struct usb_device_id *id
913
909
usb_set_intfdata (intf , catc );
914
910
915
911
SET_NETDEV_DEV (netdev , & intf -> dev );
916
- if (register_netdev (netdev ) != 0 ) {
917
- usb_set_intfdata (intf , NULL );
918
- usb_free_urb (catc -> ctrl_urb );
919
- usb_free_urb (catc -> tx_urb );
920
- usb_free_urb (catc -> rx_urb );
921
- usb_free_urb (catc -> irq_urb );
922
- free_netdev (netdev );
923
- return - EIO ;
924
- }
912
+ ret = register_netdev (netdev );
913
+ if (ret )
914
+ goto fail_clear_intfdata ;
915
+
925
916
return 0 ;
917
+
918
+ fail_clear_intfdata :
919
+ usb_set_intfdata (intf , NULL );
920
+ fail_free :
921
+ usb_free_urb (catc -> ctrl_urb );
922
+ usb_free_urb (catc -> tx_urb );
923
+ usb_free_urb (catc -> rx_urb );
924
+ usb_free_urb (catc -> irq_urb );
925
+ free_netdev (netdev );
926
+ return ret ;
926
927
}
927
928
928
929
static void catc_disconnect (struct usb_interface * intf )
0 commit comments