mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 14:12:06 +00:00
uio: fix incorrect memory leak cleanup
Commit75f0aef622
("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:75f0aef622
("uio: fix memory leak") Signed-off-by: Suman Anna <s-anna@ti.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
a20cfc1cde
commit
0d83539092
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user