|
@@ -270,11 +270,14 @@ int bus_add_device(struct device * dev)
|
|
|
|
|
|
if (bus) {
|
|
|
pr_debug("bus %s: add device %s\n", bus->name, dev->bus_id);
|
|
|
- device_attach(dev);
|
|
|
+ error = device_attach(dev);
|
|
|
klist_add_tail(&bus->klist_devices, &dev->knode_bus);
|
|
|
- device_add_attrs(bus, dev);
|
|
|
- sysfs_create_link(&bus->devices.kobj, &dev->kobj, dev->bus_id);
|
|
|
- sysfs_create_link(&dev->kobj, &dev->bus->subsys.kset.kobj, "bus");
|
|
|
+ if (error >= 0)
|
|
|
+ error = device_add_attrs(bus, dev);
|
|
|
+ if (!error) {
|
|
|
+ sysfs_create_link(&bus->devices.kobj, &dev->kobj, dev->bus_id);
|
|
|
+ sysfs_create_link(&dev->kobj, &dev->bus->subsys.kset.kobj, "bus");
|
|
|
+ }
|
|
|
}
|
|
|
return error;
|
|
|
}
|
|
@@ -394,7 +397,7 @@ static int bus_rescan_devices_helper(struct device *dev, void *data)
|
|
|
{
|
|
|
int *count = data;
|
|
|
|
|
|
- if (!dev->driver && device_attach(dev))
|
|
|
+ if (!dev->driver && (device_attach(dev) > 0))
|
|
|
(*count)++;
|
|
|
|
|
|
return 0;
|