From 837809e45d43bd74a17901314a4a0d4f9f2dfc89 Mon Sep 17 00:00:00 2001 From: Stas Sergeev Date: Sat, 26 Apr 2008 19:52:35 +0400 Subject: [PATCH] --- yaml --- r: 95603 b: refs/heads/master c: 16dc42e018c2868211b4928f20a957c0c216126c h: refs/heads/master i: 95601: 43980bca79e0ab463dfba858719edd35a7b73f1e 95599: 636641a18eada6d54f5eee349d83e7c1cac5e347 v: v3 --- [refs] | 2 +- trunk/drivers/base/driver.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 91c3ae5bc592..1d8b17701921 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 93dd40013f4f7f4b18d19d0d77855f025bcc57c3 +refs/heads/master: 16dc42e018c2868211b4928f20a957c0c216126c diff --git a/trunk/drivers/base/driver.c b/trunk/drivers/base/driver.c index 9a6537f14401..2ef5acf4368b 100644 --- a/trunk/drivers/base/driver.c +++ b/trunk/drivers/base/driver.c @@ -217,12 +217,22 @@ static void driver_remove_groups(struct device_driver *drv, int driver_register(struct device_driver *drv) { int ret; + struct device_driver *other; if ((drv->bus->probe && drv->probe) || (drv->bus->remove && drv->remove) || (drv->bus->shutdown && drv->shutdown)) printk(KERN_WARNING "Driver '%s' needs updating - please use " "bus_type methods\n", drv->name); + + other = driver_find(drv->name, drv->bus); + if (other) { + put_driver(other); + printk(KERN_ERR "Error: Driver '%s' is already registered, " + "aborting...\n", drv->name); + return -EEXIST; + } + ret = bus_add_driver(drv); if (ret) return ret;