mutex_lock(&phydev->lock);
 
-       if (phydev->drv->probe) {
-               /* Deassert the reset signal */
-               phy_device_reset(phydev, 0);
+       /* Deassert the reset signal */
+       phy_device_reset(phydev, 0);
 
+       if (phydev->drv->probe) {
                err = phydev->drv->probe(phydev);
-               if (err) {
-                       /* Assert the reset signal */
-                       phy_device_reset(phydev, 1);
+               if (err)
                        goto out;
-               }
        }
 
        /* Start out supporting everything. Eventually,
        phydev->state = PHY_READY;
 
 out:
+       /* Assert the reset signal */
+       if (err)
+               phy_device_reset(phydev, 1);
+
        mutex_unlock(&phydev->lock);
 
        return err;
        sfp_bus_del_upstream(phydev->sfp_bus);
        phydev->sfp_bus = NULL;
 
-       if (phydev->drv && phydev->drv->remove) {
+       if (phydev->drv && phydev->drv->remove)
                phydev->drv->remove(phydev);
 
-               /* Assert the reset signal */
-               phy_device_reset(phydev, 1);
-       }
+       /* Assert the reset signal */
+       phy_device_reset(phydev, 1);
+
        phydev->drv = NULL;
 
        return 0;