lkml.org 
[lkml]   [2019]   [Aug]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.14 13/27] lan78xx: Fix memory leaks
    Date
    From: Wenwen Wang <wenwen@cs.uga.edu>

    [ Upstream commit b9cbf8a64865b50fd0f4a3915fa00ac7365cdf8f ]

    In lan78xx_probe(), a new urb is allocated through usb_alloc_urb() and
    saved to 'dev->urb_intr'. However, in the following execution, if an error
    occurs, 'dev->urb_intr' is not deallocated, leading to memory leaks. To fix
    this issue, invoke usb_free_urb() to free the allocated urb before
    returning from the function.

    Signed-off-by: Wenwen Wang <wenwen@cs.uga.edu>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/usb/lan78xx.c | 8 +++++---
    1 file changed, 5 insertions(+), 3 deletions(-)

    diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
    index b62c41114e34e..24b994c68bccd 100644
    --- a/drivers/net/usb/lan78xx.c
    +++ b/drivers/net/usb/lan78xx.c
    @@ -3645,7 +3645,7 @@ static int lan78xx_probe(struct usb_interface *intf,
    ret = register_netdev(netdev);
    if (ret != 0) {
    netif_err(dev, probe, netdev, "couldn't register the device\n");
    - goto out3;
    + goto out4;
    }

    usb_set_intfdata(intf, dev);
    @@ -3660,12 +3660,14 @@ static int lan78xx_probe(struct usb_interface *intf,

    ret = lan78xx_phy_init(dev);
    if (ret < 0)
    - goto out4;
    + goto out5;

    return 0;

    -out4:
    +out5:
    unregister_netdev(netdev);
    +out4:
    + usb_free_urb(dev->urb_intr);
    out3:
    lan78xx_unbind(dev, intf);
    out2:
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-08-29 20:18    [W:3.333 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site