diff options
author | Kay Sievers <kay.sievers@vrfy.org> | 2009-05-28 14:24:07 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-05-28 14:24:07 -0700 |
commit | 5c8563d773c0e9f0ac2a552e84806decd98ce732 (patch) | |
tree | b771f23cd143c4efb4f140f8ef98204cf9c6ef93 /drivers/base/bus.c | |
parent | 086a377edc969aea6c761176a7e4ff68f264d6fe (diff) | |
download | blackbird-op-linux-5c8563d773c0e9f0ac2a552e84806decd98ce732.tar.gz blackbird-op-linux-5c8563d773c0e9f0ac2a552e84806decd98ce732.zip |
Driver Core: do not oops when driver_unregister() is called for unregistered drivers
We also fix a problem with cleaning up properly when initializing
drivers and devices, so checks like this will work successfully.
Portions of the patch by Linus and Greg and Ingo.
Reported-by: Ozan Çağlayan <ozan@pardus.org.tr>
Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/base/bus.c')
-rw-r--r-- | drivers/base/bus.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/base/bus.c b/drivers/base/bus.c index dc030f1f00f1..c6599618523e 100644 --- a/drivers/base/bus.c +++ b/drivers/base/bus.c @@ -700,8 +700,10 @@ int bus_add_driver(struct device_driver *drv) } kobject_uevent(&priv->kobj, KOBJ_ADD); - return error; + return 0; out_unregister: + kfree(drv->p); + drv->p = NULL; kobject_put(&priv->kobj); out_put_bus: bus_put(bus); |