From 02153a0f439130b3a65ae42d9ef20381e59a4774 Mon Sep 17 00:00:00 2001 From: Hemant Kumar Date: Tue, 1 Nov 2016 13:00:57 -0700 Subject: 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 --- drivers/usb/gadget/configfs.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'drivers/usb/gadget') 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, -- cgit v1.2.3