From: Greg Kroah-Hartman <greg@kroah.com>
Date: Fri, 24 Oct 2014 10:46:15 +0000 (+0800)
Subject: greybus: module: don't create duplicate module ids
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=066799c18ff476642858fb0e4050c5c600c47e4c;p=linux.git

greybus: module: don't create duplicate module ids

If we somehow get a hotplug event for a module id that we already have
created[1], don't try to create it again, or sysfs will complain loudly.
Instead, abort the creation properly.

[1] If, for example, you happened to run a script on a greybus emulator
twice in a row...

Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Reviewed-by: Alex Elder <elder@linaro.org>
---

diff --git a/drivers/staging/greybus/module.c b/drivers/staging/greybus/module.c
index f9415c0f735ee..54e8f9e68d256 100644
--- a/drivers/staging/greybus/module.c
+++ b/drivers/staging/greybus/module.c
@@ -70,6 +70,13 @@ struct gb_module *gb_module_create(struct greybus_host_device *hd, u8 module_id)
 	struct gb_module *gmod;
 	int retval;
 
+	gmod = gb_module_find(hd, module_id);
+	if (gmod) {
+		dev_err(hd->parent, "Duplicate module id %d will not be created\n",
+			module_id);
+		return NULL;
+	}
+
 	gmod = kzalloc(sizeof(*gmod), GFP_KERNEL);
 	if (!gmod)
 		return NULL;