greybus: module: don't create duplicate module ids
authorGreg Kroah-Hartman <greg@kroah.com>
Fri, 24 Oct 2014 10:46:15 +0000 (18:46 +0800)
committerGreg Kroah-Hartman <greg@kroah.com>
Fri, 24 Oct 2014 11:00:21 +0000 (19:00 +0800)
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>
drivers/staging/greybus/module.c

index f9415c0..54e8f9e 100644 (file)
@@ -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;