lkml.org 
[lkml]   [2016]   [Nov]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 155/346] USB: serial: fix memleak in driver-registration error path
    3.16.39-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Alexey Klimov <klimov.linux@gmail.com>

    commit 647024a7df36014bbc4479d92d88e6b77c0afcf6 upstream.

    udriver struct allocated by kzalloc() will not be freed
    if usb_register() and next calls fail. This patch fixes this
    by adding one more step with kfree(udriver) in error path.

    Signed-off-by: Alexey Klimov <klimov.linux@gmail.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    drivers/usb/serial/usb-serial.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    --- a/drivers/usb/serial/usb-serial.c
    +++ b/drivers/usb/serial/usb-serial.c
    @@ -1416,7 +1416,7 @@ int usb_serial_register_drivers(struct u

    rc = usb_register(udriver);
    if (rc)
    - return rc;
    + goto failed_usb_register;

    for (sd = serial_drivers; *sd; ++sd) {
    (*sd)->usb_driver = udriver;
    @@ -1434,6 +1434,8 @@ int usb_serial_register_drivers(struct u
    while (sd-- > serial_drivers)
    usb_serial_deregister(*sd);
    usb_deregister(udriver);
    +failed_usb_register:
    + kfree(udriver);
    return rc;
    }
    EXPORT_SYMBOL_GPL(usb_serial_register_drivers);
    \
     
     \ /
      Last update: 2016-11-14 03:43    [W:2.230 / U:0.172 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site