|
@@ -439,8 +439,10 @@ void bus_remove_device(struct device * dev)
|
|
sysfs_remove_link(&dev->kobj, "bus");
|
|
sysfs_remove_link(&dev->kobj, "bus");
|
|
sysfs_remove_link(&dev->bus->devices.kobj, dev->bus_id);
|
|
sysfs_remove_link(&dev->bus->devices.kobj, dev->bus_id);
|
|
device_remove_attrs(dev->bus, dev);
|
|
device_remove_attrs(dev->bus, dev);
|
|
- dev->is_registered = 0;
|
|
|
|
- klist_del(&dev->knode_bus);
|
|
|
|
|
|
+ if (dev->is_registered) {
|
|
|
|
+ dev->is_registered = 0;
|
|
|
|
+ klist_del(&dev->knode_bus);
|
|
|
|
+ }
|
|
pr_debug("bus %s: remove device %s\n", dev->bus->name, dev->bus_id);
|
|
pr_debug("bus %s: remove device %s\n", dev->bus->name, dev->bus_id);
|
|
device_release_driver(dev);
|
|
device_release_driver(dev);
|
|
put_bus(dev->bus);
|
|
put_bus(dev->bus);
|