summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2018-12-04 23:28:58 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2018-12-04 23:28:58 -0800
commitb4266af231b3ccded86afc67a6c62ba39602ba47 (patch)
treebdb17b9de28066052f8c67ff157d1e5a31497a10
parent9e66b661ec6ac6836d4b2c98422038f9fd5d174d (diff)
parentceed3cc4a19356cfd8196f43238bc6be9b3b6ed5 (diff)
Merge "usb: gadget: Fix double free of device descriptor pointers"
-rw-r--r--drivers/usb/gadget/function/f_gsi.c11
-rw-r--r--include/linux/usb/gadget.h1
2 files changed, 5 insertions, 7 deletions
diff --git a/drivers/usb/gadget/function/f_gsi.c b/drivers/usb/gadget/function/f_gsi.c
index ff61879767b3..266d19049986 100644
--- a/drivers/usb/gadget/function/f_gsi.c
+++ b/drivers/usb/gadget/function/f_gsi.c
@@ -2843,16 +2843,13 @@ static void gsi_unbind(struct usb_configuration *c, struct usb_function *f)
if (gsi->prot_id == IPA_USB_MBIM)
mbim_gsi_ext_config_desc.function.subCompatibleID[0] = 0;
- if (gadget_is_superspeed(c->cdev->gadget)) {
+ if (gadget_is_superspeed(c->cdev->gadget))
usb_free_descriptors(f->ss_descriptors);
- f->ss_descriptors = NULL;
- }
- if (gadget_is_dualspeed(c->cdev->gadget)) {
+
+ if (gadget_is_dualspeed(c->cdev->gadget))
usb_free_descriptors(f->hs_descriptors);
- f->hs_descriptors = NULL;
- }
+
usb_free_descriptors(f->fs_descriptors);
- f->fs_descriptors = NULL;
if (gsi->c_port.notify) {
kfree(gsi->c_port.notify_req->buf);
diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h
index 0e61b1f65359..2bf825f5b711 100644
--- a/include/linux/usb/gadget.h
+++ b/include/linux/usb/gadget.h
@@ -1456,6 +1456,7 @@ struct usb_descriptor_header **usb_copy_descriptors(
static inline void usb_free_descriptors(struct usb_descriptor_header **v)
{
kfree(v);
+ v = NULL;
}
struct usb_function;