usb: gadget: fusb300_udc: Fix memory leak of fusb300->ep[i]
[ Upstream commit 62fd0e0a24abeebe2c19fce49dd5716d9b62042d ] There is no deallocation of fusb300->ep[i] elements, allocated at fusb300_probe. The patch adds deallocation of fusb300->ep array elements. Signed-off-by: Young Xiao <92siuyang@gmail.com> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
5b3f570661
commit
53f1c783ec
1 changed files with 5 additions and 0 deletions
|
@ -1345,12 +1345,15 @@ static const struct usb_gadget_ops fusb300_gadget_ops = {
|
||||||
static int fusb300_remove(struct platform_device *pdev)
|
static int fusb300_remove(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct fusb300 *fusb300 = platform_get_drvdata(pdev);
|
struct fusb300 *fusb300 = platform_get_drvdata(pdev);
|
||||||
|
int i;
|
||||||
|
|
||||||
usb_del_gadget_udc(&fusb300->gadget);
|
usb_del_gadget_udc(&fusb300->gadget);
|
||||||
iounmap(fusb300->reg);
|
iounmap(fusb300->reg);
|
||||||
free_irq(platform_get_irq(pdev, 0), fusb300);
|
free_irq(platform_get_irq(pdev, 0), fusb300);
|
||||||
|
|
||||||
fusb300_free_request(&fusb300->ep[0]->ep, fusb300->ep0_req);
|
fusb300_free_request(&fusb300->ep[0]->ep, fusb300->ep0_req);
|
||||||
|
for (i = 0; i < FUSB300_MAX_NUM_EP; i++)
|
||||||
|
kfree(fusb300->ep[i]);
|
||||||
kfree(fusb300);
|
kfree(fusb300);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1494,6 +1497,8 @@ clean_up:
|
||||||
if (fusb300->ep0_req)
|
if (fusb300->ep0_req)
|
||||||
fusb300_free_request(&fusb300->ep[0]->ep,
|
fusb300_free_request(&fusb300->ep[0]->ep,
|
||||||
fusb300->ep0_req);
|
fusb300->ep0_req);
|
||||||
|
for (i = 0; i < FUSB300_MAX_NUM_EP; i++)
|
||||||
|
kfree(fusb300->ep[i]);
|
||||||
kfree(fusb300);
|
kfree(fusb300);
|
||||||
}
|
}
|
||||||
if (reg)
|
if (reg)
|
||||||
|
|
Loading…
Add table
Reference in a new issue