lkml.org 
[lkml]   [2016]   [Jan]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 1/4] USB: mxu11x0: fix memory leak on usb_serial private data
    Date
    On nominal execution, private data allocated on port_probe and attach
    are never freed. Add port_remove and release callbacks to free them
    respectively.

    Signed-off-by: Mathieu OTHACEHE <m.othacehe@gmail.com>
    ---

    Changes in v2:
    * Move release callback after attach callback

    drivers/usb/serial/mxu11x0.c | 20 ++++++++++++++++++++
    1 file changed, 20 insertions(+)

    diff --git a/drivers/usb/serial/mxu11x0.c b/drivers/usb/serial/mxu11x0.c
    index e3c3f57c..6196073 100644
    --- a/drivers/usb/serial/mxu11x0.c
    +++ b/drivers/usb/serial/mxu11x0.c
    @@ -368,6 +368,16 @@ static int mxu1_port_probe(struct usb_serial_port *port)
    return 0;
    }

    +static int mxu1_port_remove(struct usb_serial_port *port)
    +{
    + struct mxu1_port *mxport;
    +
    + mxport = usb_get_serial_port_data(port);
    + kfree(mxport);
    +
    + return 0;
    +}
    +
    static int mxu1_startup(struct usb_serial *serial)
    {
    struct mxu1_device *mxdev;
    @@ -427,6 +437,14 @@ err_free_mxdev:
    return err;
    }

    +static void mxu1_release(struct usb_serial *serial)
    +{
    + struct mxu1_device *mxdev;
    +
    + mxdev = usb_get_serial_data(serial);
    + kfree(mxdev);
    +}
    +
    static int mxu1_write_byte(struct usb_serial_port *port, u32 addr,
    u8 mask, u8 byte)
    {
    @@ -957,7 +975,9 @@ static struct usb_serial_driver mxu11x0_device = {
    .id_table = mxu1_idtable,
    .num_ports = 1,
    .port_probe = mxu1_port_probe,
    + .port_remove = mxu1_port_remove,
    .attach = mxu1_startup,
    + .release = mxu1_release,
    .open = mxu1_open,
    .close = mxu1_close,
    .ioctl = mxu1_ioctl,
    --
    2.6.4


    \
     
     \ /
      Last update: 2016-01-04 20:21    [W:4.910 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site