lkml.org 
[lkml]   [2018]   [Mar]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.9 062/281] uio: fix incorrect memory leak cleanup
    Date
    From: Suman Anna <s-anna@ti.com>

    [ Upstream commit 0d83539092ddb1ab79b4d65bccb866bf07ea2ccd ]

    Commit 75f0aef6220d ("uio: fix memory leak") has fixed up some
    memory leaks during the failure paths of the addition of uio
    attributes, but still is not correct entirely. A kobject_uevent()
    failure still needs a kobject_put() and the kobject container
    structure allocation failure before the kobject_init() doesn't
    need a kobject_put(). Fix this properly.

    Fixes: 75f0aef6220d ("uio: fix memory leak")
    Signed-off-by: Suman Anna <s-anna@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    drivers/uio/uio.c | 8 ++++----
    1 file changed, 4 insertions(+), 4 deletions(-)

    diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c
    index fba021f5736a..208bc52fc84d 100644
    --- a/drivers/uio/uio.c
    +++ b/drivers/uio/uio.c
    @@ -279,7 +279,7 @@ static int uio_dev_add_attributes(struct uio_device *idev)
    map = kzalloc(sizeof(*map), GFP_KERNEL);
    if (!map) {
    ret = -ENOMEM;
    - goto err_map_kobj;
    + goto err_map;
    }
    kobject_init(&map->kobj, &map_attr_type);
    map->mem = mem;
    @@ -289,7 +289,7 @@ static int uio_dev_add_attributes(struct uio_device *idev)
    goto err_map_kobj;
    ret = kobject_uevent(&map->kobj, KOBJ_ADD);
    if (ret)
    - goto err_map;
    + goto err_map_kobj;
    }

    for (pi = 0; pi < MAX_UIO_PORT_REGIONS; pi++) {
    @@ -308,7 +308,7 @@ static int uio_dev_add_attributes(struct uio_device *idev)
    portio = kzalloc(sizeof(*portio), GFP_KERNEL);
    if (!portio) {
    ret = -ENOMEM;
    - goto err_portio_kobj;
    + goto err_portio;
    }
    kobject_init(&portio->kobj, &portio_attr_type);
    portio->port = port;
    @@ -319,7 +319,7 @@ static int uio_dev_add_attributes(struct uio_device *idev)
    goto err_portio_kobj;
    ret = kobject_uevent(&portio->kobj, KOBJ_ADD);
    if (ret)
    - goto err_portio;
    + goto err_portio_kobj;
    }

    return 0;
    --
    2.14.1
    \
     
     \ /
      Last update: 2018-03-19 22:34    [W:3.873 / U:0.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site