Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[firefly-linux-kernel-4.4.55.git] / drivers / staging / wlan-ng / prism2usb.c
index b401974fb282e1a52967d31df2025791352fadda..4739c14d83593f96bdd845b6fc8c0f84f13d2604 100644 (file)
@@ -140,11 +140,9 @@ static int prism2sta_probe_usb(struct usb_interface *interface,
                                           prism2_reset_holdtime,
                                           prism2_reset_settletime, 0);
                if (result != 0) {
-                       unregister_wlandev(wlandev);
-                       hfa384x_destroy(hw);
                        result = -EIO;
                        dev_err(&interface->dev, "hfa384x_corereset() failed.\n");
-                       goto failed;
+                       goto failed_reset;
                }
        }
 
@@ -159,11 +157,15 @@ static int prism2sta_probe_usb(struct usb_interface *interface,
        if (register_wlandev(wlandev) != 0) {
                dev_err(&interface->dev, "register_wlandev() failed.\n");
                result = -EIO;
-               goto failed;
+               goto failed_register;
        }
 
        goto done;
 
+failed_register:
+       usb_put_dev(dev);
+failed_reset:
+       wlan_unsetup(wlandev);
 failed:
        kfree(wlandev);
        kfree(hw);