struct _adapter *padapter = netdev_priv(pnetdev);
        struct usb_device *udev = interface_to_usbdev(pusb_intf);
 
-       if (padapter->fw_found)
-               release_firmware(padapter->fw);
-       /* never exit with a firmware callback pending */
-       wait_for_completion(&padapter->rtl8712_fw_ready);
        usb_set_intfdata(pusb_intf, NULL);
        if (padapter) {
+               if (padapter->fw_found)
+                       release_firmware(padapter->fw);
+               /* never exit with a firmware callback pending */
+               wait_for_completion(&padapter->rtl8712_fw_ready);
                if (drvpriv.drv_registered == true)
                        padapter->bSurpriseRemoved = true;
                if (pnetdev != NULL) {