diff options
| author | Hemant Kumar <hemantk@codeaurora.org> | 2016-07-08 15:34:08 -0700 |
|---|---|---|
| committer | Hemant Kumar <hemantk@codeaurora.org> | 2016-07-08 16:05:36 -0700 |
| commit | debda566010d7939560ce078820003ff18fa97da (patch) | |
| tree | 2d8d6a757178309655b08a3751b4d805bac7013d | |
| parent | 57064792421042cc33dc85ac9892b62cefb56299 (diff) | |
usb: gadget: f_gsi: Set speed descriptor pointers to NULL after free
After gsi_unbind() if gsi_bind() function frees speed descriptor due
to an error leads to double freeing of descriptor. Fix this issue by
setting descriptor pointer back to NULL after freeing the descriptor
memory.
CRs-Fixed: 1038866
Change-Id: Ic5ee71389b6b20c8557e0a75f9bbe5a1749cf655
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
| -rw-r--r-- | drivers/usb/gadget/function/f_gsi.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/usb/gadget/function/f_gsi.c b/drivers/usb/gadget/function/f_gsi.c index d79e85979e40..84fb715075af 100644 --- a/drivers/usb/gadget/function/f_gsi.c +++ b/drivers/usb/gadget/function/f_gsi.c @@ -2574,11 +2574,16 @@ 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); - if (gadget_is_dualspeed(c->cdev->gadget)) + f->ss_descriptors = NULL; + } + 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); |
