usb: gadget: Do not disconnect unregistered dev
authorBadhri Jagan Sridharan <Badhri@google.com>
Wed, 6 May 2015 20:40:15 +0000 (13:40 -0700)
committerJohn Stultz <john.stultz@linaro.org>
Tue, 16 Feb 2016 21:52:11 +0000 (13:52 -0800)
configfs_composite_unbind sets the gadget data
to null. Therefore, add check in disconnect
function to make sure that cdev is not NULL.
Prints a WARN message if the driver tries to
redundantly disconnect a gadget.

Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
Change-Id: I248cb7175d0dd9a51c18053dd39475d8b3284f6d

drivers/usb/gadget/composite.c

index 8b14c2a13ac51abc9d3f433a0261c599ec8cdaf6..ffa2a682c04b09b82bd10b334ba8ff6a1503b958 100644 (file)
@@ -1870,6 +1870,12 @@ void composite_disconnect(struct usb_gadget *gadget)
        struct usb_composite_dev        *cdev = get_gadget_data(gadget);
        unsigned long                   flags;
 
+       if (cdev == NULL) {
+               WARN(1, "%s: Calling disconnect on a Gadget that is \
+                        not connected\n", __func__);
+               return;
+       }
+
        /* REVISIT:  should we have config and device level
         * disconnect callbacks?
         */