f2fs: fix wrong sum_page pointer in f2fs_gc
authorJaegeuk Kim <jaegeuk@kernel.org>
Wed, 12 Oct 2016 20:38:41 +0000 (13:38 -0700)
committerJaegeuk Kim <jaegeuk@google.com>
Mon, 25 Sep 2017 22:01:24 +0000 (15:01 -0700)
commit de0dcc40f6e24d6bac6b60e36eac4659bbbd3f00 upstream.

This patch fixes using a wrong pointer for sum_page in f2fs_gc.

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/gc.c

index 0a0a1ad1fe1f51938ec8cec3c7adb20184d9a6ed..4336807cc690c2f1857bcf975dc7b9c929b3ec4a 100644 (file)
@@ -848,16 +848,16 @@ static int do_garbage_collect(struct f2fs_sb_info *sbi,
 
        for (segno = start_segno; segno < end_segno; segno++) {
 
-               if (get_valid_blocks(sbi, segno, 1) == 0 ||
-                                       unlikely(f2fs_cp_error(sbi)))
-                       goto next;
-
                /* find segment summary of victim */
                sum_page = find_get_page(META_MAPPING(sbi),
                                        GET_SUM_BLOCK(sbi, segno));
-               f2fs_bug_on(sbi, !PageUptodate(sum_page));
                f2fs_put_page(sum_page, 0);
 
+               if (get_valid_blocks(sbi, segno, 1) == 0 ||
+                               !PageUptodate(sum_page) ||
+                               unlikely(f2fs_cp_error(sbi)))
+                       goto next;
+
                sum = page_address(sum_page);
                f2fs_bug_on(sbi, type != GET_SUM_TYPE((&sum->footer)));