The recent __must_check stuff flagged some error handling bugs.
phy/fixed.c:
* handle device_bind_driver() failure
phy/phy_device.c:
* handle device_bind_driver() failure
* release rwsem upon failure
Signed-off-by: Jeff Garzik <jeff@garzik.org>
                goto probe_fail;
        }
 
-       device_bind_driver(&phydev->dev);
+       err = device_bind_driver(&phydev->dev);
+
        up_write(&phydev->dev.bus->subsys.rwsem);
 
+       if (err)
+               goto probe_fail;
+
        return 0;
 
 probe_fail:
 
 
                err = d->driver->probe(d);
 
-               if (err < 0)
-                       return ERR_PTR(err);
+               if (err >= 0)
+                       err = device_bind_driver(d);
 
-               device_bind_driver(d);
                up_write(&d->bus->subsys.rwsem);
+
+               if (err)
+                       return ERR_PTR(err);
        }
 
        if (phydev->attached_dev) {