public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [patch] detect duplicate drivers
@ 2008-04-26 15:52 Stas Sergeev
  0 siblings, 0 replies; only message in thread
From: Stas Sergeev @ 2008-04-26 15:52 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Greg KH, Linux kernel, Takashi Iwai

[-- Attachment #1: Type: text/plain, Size: 251 bytes --]

Hello.

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>

[-- Attachment #2: drv_dup.diff --]
[-- Type: text/x-patch, Size: 738 bytes --]

--- a/drivers/base/driver.c	2008-04-22 20:51:31.000000000 +0400
+++ b/drivers/base/driver.c	2008-04-26 19:43:26.000000000 +0400
@@ -217,12 +217,22 @@
 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;

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2008-04-26 15:53 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-26 15:52 [patch] detect duplicate drivers Stas Sergeev

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox