driver = eeh_pcid_get(dev);
        if (driver) {
-               eeh_pcid_put(dev);
-               if (driver->err_handler)
+               if (driver->err_handler) {
+                       eeh_pcid_put(dev);
                        return NULL;
+               }
+               eeh_pcid_put(dev);
        }
 
 #ifdef CONFIG_PCI_IOV
        if (eeh_dev_removed(edev))
                return NULL;
 
-       driver = eeh_pcid_get(dev);
-       if (driver) {
-               eeh_pcid_put(dev);
-               if (removed &&
-                   eeh_pe_passed(edev->pe))
-                       return NULL;
-               if (removed &&
-                   driver->err_handler &&
-                   driver->err_handler->error_detected &&
-                   driver->err_handler->slot_reset)
+       if (removed) {
+               if (eeh_pe_passed(edev->pe))
                        return NULL;
+               driver = eeh_pcid_get(dev);
+               if (driver) {
+                       if (driver->err_handler &&
+                           driver->err_handler->error_detected &&
+                           driver->err_handler->slot_reset) {
+                               eeh_pcid_put(dev);
+                               return NULL;
+                       }
+                       eeh_pcid_put(dev);
+               }
        }
 
        /* Remove it from PCI subsystem */