--- y/drivers/base/driver.c +++ x/drivers/base/driver.c @@ -287,10 +287,13 @@ struct device_driver *driver_find(const struct driver_private *priv; if (k) { + struct device_driver *drv; + + priv = to_driver(k); + drv = priv->driver; /* Drop reference added by kset_find_obj() */ kobject_put(k); - priv = to_driver(k); - return priv->driver; + return drv; } return NULL; }