]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/uio/uio.c
uio: fix incorrect memory leak cleanup
[karo-tx-linux.git] / drivers / uio / uio.c
index 1c196f87e9d967886c88b1ae7fe05cc5f01ed4ee..ff04b7f8549f06f5730afb1cf6334785afab9d05 100644 (file)
@@ -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;