summaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorHemant Kumar <hemantk@codeaurora.org>2016-11-01 13:00:57 -0700
committerHemant Kumar <hemantk@codeaurora.org>2016-11-01 19:21:33 -0700
commit02153a0f439130b3a65ae42d9ef20381e59a4774 (patch)
tree6170d1209eac2ae128eb71afaf8248459bab83f1 /drivers/usb
parentbbd8499b43c68d14ee8d4be46680f59516f81a70 (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.c9
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,