@@ -4106,39 +4106,41 @@ static int lan78xx_probe(struct usb_interface *intf,
41064106 period = ep_intr -> desc .bInterval ;
41074107 maxp = usb_maxpacket (dev -> udev , dev -> pipe_intr , 0 );
41084108 buf = kmalloc (maxp , GFP_KERNEL );
4109- if (buf ) {
4110- dev -> urb_intr = usb_alloc_urb (0 , GFP_KERNEL );
4111- if (!dev -> urb_intr ) {
4112- ret = - ENOMEM ;
4113- kfree (buf );
4114- goto out3 ;
4115- } else {
4116- usb_fill_int_urb (dev -> urb_intr , dev -> udev ,
4117- dev -> pipe_intr , buf , maxp ,
4118- intr_complete , dev , period );
4119- dev -> urb_intr -> transfer_flags |= URB_FREE_BUFFER ;
4120- }
4109+ if (!buf ) {
4110+ ret = - ENOMEM ;
4111+ goto out3 ;
4112+ }
4113+
4114+ dev -> urb_intr = usb_alloc_urb (0 , GFP_KERNEL );
4115+ if (!dev -> urb_intr ) {
4116+ ret = - ENOMEM ;
4117+ goto out4 ;
4118+ } else {
4119+ usb_fill_int_urb (dev -> urb_intr , dev -> udev ,
4120+ dev -> pipe_intr , buf , maxp ,
4121+ intr_complete , dev , period );
4122+ dev -> urb_intr -> transfer_flags |= URB_FREE_BUFFER ;
41214123 }
41224124
41234125 dev -> maxpacket = usb_maxpacket (dev -> udev , dev -> pipe_out , 1 );
41244126
41254127 /* Reject broken descriptors. */
41264128 if (dev -> maxpacket == 0 ) {
41274129 ret = - ENODEV ;
4128- goto out4 ;
4130+ goto out5 ;
41294131 }
41304132
41314133 /* driver requires remote-wakeup capability during autosuspend. */
41324134 intf -> needs_remote_wakeup = 1 ;
41334135
41344136 ret = lan78xx_phy_init (dev );
41354137 if (ret < 0 )
4136- goto out4 ;
4138+ goto out5 ;
41374139
41384140 ret = register_netdev (netdev );
41394141 if (ret != 0 ) {
41404142 netif_err (dev , probe , netdev , "couldn't register the device\n" );
4141- goto out5 ;
4143+ goto out6 ;
41424144 }
41434145
41444146 usb_set_intfdata (intf , dev );
@@ -4153,10 +4155,12 @@ static int lan78xx_probe(struct usb_interface *intf,
41534155
41544156 return 0 ;
41554157
4156- out5 :
4158+ out6 :
41574159 phy_disconnect (netdev -> phydev );
4158- out4 :
4160+ out5 :
41594161 usb_free_urb (dev -> urb_intr );
4162+ out4 :
4163+ kfree (buf );
41604164out3 :
41614165 lan78xx_unbind (dev , intf );
41624166out2 :
0 commit comments