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, 8 Dec 2018 12:05:14 +0000 (13:05 +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 3f58f3a2766d00d52f7bfa6efa207d54c31806de..a57b7b10d13d55a2cac0b3c7b80c4fed600e1b66 100644 (file)
@@ -796,7 +796,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;
@@ -824,6 +824,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;