f2fs: fix to clear PG_error if fsverity failed
authorChao Yu <yuchao0@huawei.com>
Sat, 21 Mar 2020 12:24:11 +0000 (20:24 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 31 Mar 2020 03:46:24 +0000 (20:46 -0700)
In f2fs_decompress_end_io(), we should clear PG_error flag before page
unlock, otherwise reread will fail due to the flag as described in
commit fb7d70db305a ("f2fs: clear PageError on the read path").

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/compress.c

index 00fd6f904139c5e22999288920c6e9ad013f6d38..d66d372d104dc97bcba12c128b887f052bed18d2 100644 (file)
@@ -1187,15 +1187,17 @@ void f2fs_decompress_end_io(struct page **rpages,
                if (!rpage)
                        continue;
 
-               if (err || PageError(rpage)) {
-                       ClearPageUptodate(rpage);
-                       ClearPageError(rpage);
-               } else {
-                       if (!verity || fsverity_verify_page(rpage))
-                               SetPageUptodate(rpage);
-                       else
-                               SetPageError(rpage);
+               if (err || PageError(rpage))
+                       goto clear_uptodate;
+
+               if (!verity || fsverity_verify_page(rpage)) {
+                       SetPageUptodate(rpage);
+                       goto unlock;
                }
+clear_uptodate:
+               ClearPageUptodate(rpage);
+               ClearPageError(rpage);
+unlock:
                unlock_page(rpage);
        }
 }