driver core: warn about duplicate driver names on the same bus
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 <stsp@aknet.ru> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
93dd40013f
commit
16dc42e018
1 changed files with 10 additions and 0 deletions
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue