greybus: core: fix greybus device matching
authorJohan Hovold <johan@hovoldconsulting.com>
Fri, 8 Jan 2016 19:13:41 +0000 (20:13 +0100)
committerGreg Kroah-Hartman <gregkh@google.com>
Sat, 9 Jan 2016 08:41:46 +0000 (00:41 -0800)
The bus code should only match bundle devices for now, and must not
assume all greybus devices are bundles.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/core.c

index c56c0c4a44f55378314966b6e5b1cd31449d5772..6b31155d4a9c1093f574b6608aab5b736f5cbdf9 100644 (file)
@@ -65,9 +65,14 @@ greybus_match_id(struct gb_bundle *bundle, const struct greybus_bundle_id *id)
 static int greybus_module_match(struct device *dev, struct device_driver *drv)
 {
        struct greybus_driver *driver = to_greybus_driver(drv);
-       struct gb_bundle *bundle = to_gb_bundle(dev);
+       struct gb_bundle *bundle;
        const struct greybus_bundle_id *id;
 
+       if (!is_gb_bundle(dev))
+               return 0;
+
+       bundle = to_gb_bundle(dev);
+
        id = greybus_match_id(bundle, driver->id_table);
        if (id)
                return 1;