Commit 16dc42e0 authored by Stas Sergeev's avatar Stas Sergeev Committed by Greg Kroah-Hartman

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: default avatarStas Sergeev <stsp@aknet.ru>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 93dd4001
...@@ -217,12 +217,22 @@ static void driver_remove_groups(struct device_driver *drv, ...@@ -217,12 +217,22 @@ static void driver_remove_groups(struct device_driver *drv,
int driver_register(struct device_driver *drv) int driver_register(struct device_driver *drv)
{ {
int ret; int ret;
struct device_driver *other;
if ((drv->bus->probe && drv->probe) || if ((drv->bus->probe && drv->probe) ||
(drv->bus->remove && drv->remove) || (drv->bus->remove && drv->remove) ||
(drv->bus->shutdown && drv->shutdown)) (drv->bus->shutdown && drv->shutdown))
printk(KERN_WARNING "Driver '%s' needs updating - please use " printk(KERN_WARNING "Driver '%s' needs updating - please use "
"bus_type methods\n", drv->name); "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); ret = bus_add_driver(drv);
if (ret) if (ret)
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment