greybus: hid: Don't disable connection-tx before destroying hid-device
authorViresh Kumar <viresh.kumar@linaro.org>
Mon, 29 Feb 2016 06:49:50 +0000 (12:19 +0530)
committerGreg Kroah-Hartman <gregkh@google.com>
Mon, 29 Feb 2016 22:49:28 +0000 (14:49 -0800)
hid_destroy_device() can potentially call callbacks defined in struct
hid_ll_driver, which may initiate few greybus operations.

And so connection (tx) should be kept enabled until the hid-device isn't
destroyed.

Reported-by: Jiss Kuruvila <jkuruvila@google.com>
Reported-by: Laurent Pinchart <laurent.pinchart@linaro.org>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/hid.c

index 4db337cf7acc2138b699c8e1a6a34fe6c6f50e24..601ee6fc81d50ec1c321fa08705870e957101b6b 100644 (file)
@@ -490,8 +490,8 @@ static void gb_hid_disconnect(struct gb_bundle *bundle)
 {
        struct gb_hid *ghid = greybus_get_drvdata(bundle);
 
-       gb_connection_disable(ghid->connection);
        hid_destroy_device(ghid->hid);
+       gb_connection_disable(ghid->connection);
        gb_connection_destroy(ghid->connection);
        kfree(ghid);
 }