diff options
| author | Hemant Kumar <hemantk@codeaurora.org> | 2016-11-01 13:00:57 -0700 |
|---|---|---|
| committer | Hemant Kumar <hemantk@codeaurora.org> | 2016-11-01 19:21:33 -0700 |
| commit | 02153a0f439130b3a65ae42d9ef20381e59a4774 (patch) | |
| tree | 6170d1209eac2ae128eb71afaf8248459bab83f1 /drivers/usb | |
| parent | bbd8499b43c68d14ee8d4be46680f59516f81a70 (diff) | |
usb: gadget: Do not disconnect unregistered dev
configfs_composite_unbind sets the gadget data
to null. Therefore, add check in android_disconnect
function to make sure that cdev is not NULL. This
prevents NULL pointer dereference upon accessing
cdev.
Change-Id: Ib59cdd88557d917c85d8d33968efc295bcef2280
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
Diffstat (limited to 'drivers/usb')
| -rw-r--r-- | drivers/usb/gadget/configfs.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/usb/gadget/configfs.c b/drivers/usb/gadget/configfs.c index 5db4fe9e3cdf..be29dc4bef89 100644 --- a/drivers/usb/gadget/configfs.c +++ b/drivers/usb/gadget/configfs.c @@ -1528,7 +1528,14 @@ static int android_setup(struct usb_gadget *gadget, static void android_disconnect(struct usb_gadget *gadget) { struct usb_composite_dev *cdev = get_gadget_data(gadget); - struct gadget_info *gi = container_of(cdev, struct gadget_info, cdev); + struct gadget_info *gi; + + if (!cdev) { + pr_err("%s: gadget is not connected\n", __func__); + return; + } + + gi = container_of(cdev, struct gadget_info, cdev); /* accessory HID support can be active while the accessory function is not actually enabled, |
