]> rtime.felk.cvut.cz Git - zynq/linux.git/commitdiff
of: configfs: Fix memory leak in create overlay
authorJesper Larsen <jela@gomspace.com>
Tue, 25 Sep 2018 11:33:31 +0000 (13:33 +0200)
committerMichal Simek <michal.simek@xilinx.com>
Mon, 1 Oct 2018 13:01:53 +0000 (15:01 +0200)
of_fdt_unflatten_tree will allocate memory for the device tree, and
returns the pointer for the memory.

Keep a reference for that memory, and free it during release.

Signed-off-by: Jesper Larsen <jela@gomspace.com>
Tested-by: Nava kishore Manne <nava.manne@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
drivers/of/configfs.c

index 92304153b7d4fa4ff6f0e719ced37fa672b0895a..8fddeb1ee267411513d22c49bdf34d643b137aeb 100644 (file)
@@ -38,6 +38,8 @@ struct cfs_overlay_item {
 
        void                    *dtbo;
        int                     dtbo_size;
+
+       void                    *mem;
 };
 
 static DEFINE_MUTEX(overlay_lock);
@@ -47,7 +49,7 @@ static int create_overlay(struct cfs_overlay_item *overlay, void *blob)
        int err;
 
        /* unflatten the tree */
-       of_fdt_unflatten_tree(blob, NULL, &overlay->overlay);
+       overlay->mem = of_fdt_unflatten_tree(blob, NULL, &overlay->overlay);
        if (overlay->overlay == NULL) {
                pr_err("%s: failed to unflatten tree\n", __func__);
                return -EINVAL;
@@ -223,6 +225,7 @@ static void cfs_overlay_release(struct config_item *item)
                release_firmware(overlay->fw);
        /* kfree with NULL is safe */
        kfree(overlay->dtbo);
+       kfree(overlay->mem);
        kfree(overlay);
 }