summaryrefslogtreecommitdiffstats
path: root/drivers/base/driver.c
diff options
context:
space:
mode:
authorKay Sievers <kay.sievers@vrfy.org>2009-05-28 14:24:07 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2009-05-28 14:24:07 -0700
commit5c8563d773c0e9f0ac2a552e84806decd98ce732 (patch)
treeb771f23cd143c4efb4f140f8ef98204cf9c6ef93 /drivers/base/driver.c
parent086a377edc969aea6c761176a7e4ff68f264d6fe (diff)
downloadlinux-stable-5c8563d773c0e9f0ac2a552e84806decd98ce732.tar.gz
linux-stable-5c8563d773c0e9f0ac2a552e84806decd98ce732.tar.bz2
linux-stable-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/driver.c')
-rw-r--r--drivers/base/driver.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/base/driver.c b/drivers/base/driver.c
index c51f11bb29ae..8ae0f63602e0 100644
--- a/drivers/base/driver.c
+++ b/drivers/base/driver.c
@@ -257,6 +257,10 @@ EXPORT_SYMBOL_GPL(driver_register);
*/
void driver_unregister(struct device_driver *drv)
{
+ if (!drv || !drv->p) {
+ WARN(1, "Unexpected driver unregister!\n");
+ return;
+ }
driver_remove_groups(drv, drv->groups);
bus_remove_driver(drv);
}