]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
pstore/ram: Fix error-path memory leak in persistent_ram_new() callers
authorKees Cook <keescook@chromium.org>
Mon, 30 Dec 2019 19:48:10 +0000 (11:48 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 Jan 2020 09:19:57 +0000 (10:19 +0100)
commit 8df955a32a73315055e0cd187cbb1cea5820394b upstream.

For callers that allocated a label for persistent_ram_new(), if the call
fails, they must clean up the allocation.

Suggested-by: Navid Emamdoost <navid.emamdoost@gmail.com>
Fixes: 1227daa43bce ("pstore/ram: Clarify resource reservation labels")
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/lkml/20191211191353.14385-1-navid.emamdoost@gmail.com
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/pstore/ram.c

index d9d80563257351e7670ee20083a4e9ba6b1ce6f8..487ee39b438a75f12631654e3b6cae6aa4f65cff 100644 (file)
@@ -588,6 +588,7 @@ static int ramoops_init_przs(const char *name,
                        dev_err(dev, "failed to request %s mem region (0x%zx@0x%llx): %d\n",
                                name, record_size,
                                (unsigned long long)*paddr, err);
+                       kfree(label);
 
                        while (i > 0) {
                                i--;
@@ -633,6 +634,7 @@ static int ramoops_init_prz(const char *name,
 
                dev_err(dev, "failed to request %s mem region (0x%zx@0x%llx): %d\n",
                        name, sz, (unsigned long long)*paddr, err);
+               kfree(label);
                return err;
        }