| From foo@baz Wed Aug 22 09:42:09 CEST 2018 |
| From: Grigor Tovmasyan <Grigor.Tovmasyan@synopsys.com> |
| Date: Thu, 24 May 2018 18:22:30 +0400 |
| Subject: usb: gadget: dwc2: fix memory leak in gadget_init() |
| |
| From: Grigor Tovmasyan <Grigor.Tovmasyan@synopsys.com> |
| |
| [ Upstream commit 9bb073a053f0464ea74a4d4c331fdb7da58568d6 ] |
| |
| Freed allocated request for ep0 to prevent memory leak in case when |
| dwc2_driver_probe() failed. |
| |
| Cc: Stefan Wahren <stefan.wahren@i2se.com> |
| Cc: Marek Szyprowski <m.szyprowski@samsung.com> |
| Tested-by: Stefan Wahren <stefan.wahren@i2se.com> |
| Tested-by: Marek Szyprowski <m.szyprowski@samsung.com> |
| Acked-by: Minas Harutyunyan <hminas@synopsys.com> |
| Signed-off-by: Grigor Tovmasyan <tovmasya@synopsys.com> |
| Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/usb/dwc2/gadget.c | 7 +++++-- |
| 1 file changed, 5 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/usb/dwc2/gadget.c |
| +++ b/drivers/usb/dwc2/gadget.c |
| @@ -3948,9 +3948,11 @@ int dwc2_gadget_init(struct dwc2_hsotg * |
| } |
| |
| ret = usb_add_gadget_udc(dev, &hsotg->gadget); |
| - if (ret) |
| + if (ret) { |
| + dwc2_hsotg_ep_free_request(&hsotg->eps_out[0]->ep, |
| + hsotg->ctrl_req); |
| return ret; |
| - |
| + } |
| dwc2_hsotg_dump(hsotg); |
| |
| return 0; |
| @@ -3963,6 +3965,7 @@ int dwc2_gadget_init(struct dwc2_hsotg * |
| int dwc2_hsotg_remove(struct dwc2_hsotg *hsotg) |
| { |
| usb_del_gadget_udc(&hsotg->gadget); |
| + dwc2_hsotg_ep_free_request(&hsotg->eps_out[0]->ep, hsotg->ctrl_req); |
| |
| return 0; |
| } |