summaryrefslogtreecommitdiffstats
path: root/drivers/base/driver.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/base/driver.c')
-rw-r--r--drivers/base/driver.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/base/driver.c b/drivers/base/driver.c
index 3363b56675..590c97c964 100644
--- a/drivers/base/driver.c
+++ b/drivers/base/driver.c
@@ -85,14 +85,15 @@ int device_probe(struct device_d *dev)
pinctrl_select_state_default(dev);
+ list_add(&dev->active, &active);
+
ret = dev->bus->probe(dev);
if (ret) {
+ list_del(&dev->active);
dev_err(dev, "probe failed: %s\n", strerror(-ret));
return ret;
}
- list_add(&dev->active, &active);
-
return 0;
}
@@ -398,8 +399,8 @@ void devices_shutdown(void)
struct device_d *dev;
list_for_each_entry(dev, &active, active) {
- if (dev->driver->remove)
- dev->driver->remove(dev);
+ if (dev->bus->remove)
+ dev->bus->remove(dev);
}
}