OSDN Git Service

f2fs: free meta pages if sanity check for ckpt is failed
authorJaegeuk Kim <jaegeuk@kernel.org>
Tue, 6 Dec 2016 01:25:32 +0000 (17:25 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 26 Jan 2019 08:42:47 +0000 (09:42 +0100)
commit a2125ff7dd1ed3a2a53cdc1f8f9c9cec9cfaa7ab upstream.

This fixes missing freeing meta pages in the error case.

Tested-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/f2fs/checkpoint.c

index b5b8b38..f0576b8 100644 (file)
@@ -708,7 +708,7 @@ int get_valid_checkpoint(struct f2fs_sb_info *sbi)
 
        /* Sanity checking of checkpoint */
        if (sanity_check_ckpt(sbi))
-               goto fail_no_cp;
+               goto free_fail_no_cp;
 
        if (cur_page == cp1)
                sbi->cur_cp_pack = 1;
@@ -736,6 +736,9 @@ done:
        f2fs_put_page(cp2, 1);
        return 0;
 
+free_fail_no_cp:
+       f2fs_put_page(cp1, 1);
+       f2fs_put_page(cp2, 1);
 fail_no_cp:
        kfree(sbi->ckpt);
        return -EINVAL;