From stsp@aknet.ru Sat Apr 26 08:52:51 2008 From: Stas Sergeev Date: Sat, 26 Apr 2008 19:52:35 +0400 Subject: driver core: warn about duplicate driver names on the same bus To: Andrew Morton Cc: Greg KH , Takashi Iwai Message-ID: <48134FC3.6040002@aknet.ru> Currently an attempt to register multiple drivers with the same name causes the stack trace with some cryptic error message. The attached patch adds the necessary check and the clear error message. Signed-off-by: Stas Sergeev Signed-off-by: Greg Kroah-Hartman --- drivers/base/driver.c | 10 ++++++++++ 1 file changed, 10 insertions(+) --- a/drivers/base/driver.c +++ b/drivers/base/driver.c @@ -217,12 +217,22 @@ static void driver_remove_groups(struct 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;