]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
mm: memfd_luo: restore and free memfd_luo_ser on failure
authorPratyush Yadav (Google) <pratyush@kernel.org>
Thu, 22 Jan 2026 15:18:41 +0000 (16:18 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 27 Jan 2026 03:03:47 +0000 (19:03 -0800)
memfd_luo_ser has the serialization metadata.  It is of no use once
restoration fails.  Free it on failure.

Link: https://lkml.kernel.org/r/20260122151842.4069702-4-pratyush@kernel.org
Fixes: b3749f174d68 ("mm: memfd_luo: allow preserving memfd")
Signed-off-by: Pratyush Yadav (Google) <pratyush@kernel.org>
Reviewed-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
Reviewed-by: Pasha Tatashin <pasha.tatashin@soleen.com>
Cc: Baolin Wang <baolin.wang@linux.alibaba.com>
Cc: Hugh Dickins <hughd@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/memfd_luo.c

index 01a72e4d3ef69374b738809795042640f8094e91..a34fccc23b6a424fc75c4731c85d2e99d287fa6e 100644 (file)
@@ -447,7 +447,8 @@ static int memfd_luo_retrieve(struct liveupdate_file_op_args *args)
        file = memfd_alloc_file("", 0);
        if (IS_ERR(file)) {
                pr_err("failed to setup file: %pe\n", file);
-               return PTR_ERR(file);
+               err = PTR_ERR(file);
+               goto free_ser;
        }
 
        vfs_setpos(file, ser->pos, MAX_LFS_FILESIZE);
@@ -473,7 +474,8 @@ static int memfd_luo_retrieve(struct liveupdate_file_op_args *args)
 
 put_file:
        fput(file);
-
+free_ser:
+       kho_restore_free(ser);
        return err;
 }