Driver core: Don't ignore error returns from probing
This patch (as797) fixes device_add() in the driver core. It needs to pay attention when the driver for a new device reports an error. At the same time, since bus_remove_device() undoes the effects of both bus_add_device() and bus_attach_device(), it needs to check whether the bus_attach_device step failed. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
952ab431cd
commit
f70fa6296c
@@ -479,7 +479,8 @@ int device_add(struct device *dev)
|
||||
if ((error = bus_add_device(dev)))
|
||||
goto BusError;
|
||||
kobject_uevent(&dev->kobj, KOBJ_ADD);
|
||||
bus_attach_device(dev);
|
||||
if ((error = bus_attach_device(dev)))
|
||||
goto AttachError;
|
||||
if (parent)
|
||||
klist_add_tail(&dev->knode_parent, &parent->klist_children);
|
||||
|
||||
@@ -498,6 +499,8 @@ int device_add(struct device *dev)
|
||||
kfree(class_name);
|
||||
put_device(dev);
|
||||
return error;
|
||||
AttachError:
|
||||
bus_remove_device(dev);
|
||||
BusError:
|
||||
device_pm_remove(dev);
|
||||
PMError:
|
||||
|
Reference in New Issue
Block a user