greybus: bundle: check for duplicate bundle ids
authorAlex Elder <elder@linaro.org>
Tue, 9 Jun 2015 22:42:57 +0000 (17:42 -0500)
committerGreg Kroah-Hartman <gregkh@google.com>
Wed, 10 Jun 2015 17:38:23 +0000 (10:38 -0700)
Check at bundle creation time to ensure we're not creating a bundle
with an id that's the same as one that's already been created.

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/bundle.c

index a6b1b34..6e9d03a 100644 (file)
@@ -165,6 +165,16 @@ struct gb_bundle *gb_bundle_create(struct gb_interface *intf, u8 bundle_id,
        struct gb_bundle *bundle;
        int retval;
 
+       /*
+        * Reject any attempt to reuse a bundle id.  We initialize
+        * these serially, so there's no need to worry about keeping
+        * the interface bundle list locked here.
+        */
+       if (gb_bundle_find(intf, bundle_id)) {
+               pr_err("duplicate bundle id 0x%02hhx\n", bundle_id);
+               return NULL;
+       }
+
        bundle = kzalloc(sizeof(*bundle), GFP_KERNEL);
        if (!bundle)
                return NULL;