In 'f2fs_write_end_io()', end all of the in-progress writes with
-EFSCORRUPTED if the corresponding error was detected earlier.

Reported-by: syzbot+803dd716c4310d16f...@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=803dd716c4310d16ff3a
Signed-off-by: Dmitry Antipov <dmanti...@yandex.ru>
---
 fs/f2fs/data.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index 54f89f0ee69b..755806868f0e 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -320,9 +320,11 @@ static void f2fs_write_end_io(struct bio *bio)
 {
        struct f2fs_sb_info *sbi;
        struct folio_iter fi;
+       bool check;
 
        iostat_update_and_unbind_ctx(bio);
        sbi = bio->bi_private;
+       check = is_sbi_flag_set(sbi, SBI_NEED_FSCK);
 
        if (time_to_inject(sbi, FAULT_WRITE_IO))
                bio->bi_status = BLK_STS_IOERR;
@@ -331,6 +333,11 @@ static void f2fs_write_end_io(struct bio *bio)
                struct folio *folio = fi.folio;
                enum count_type type;
 
+               if (check) {
+                       mapping_set_error(folio->mapping, -EFSCORRUPTED);
+                       continue;
+               }
+
                if (fscrypt_is_bounce_folio(folio)) {
                        struct folio *io_folio = folio;
 
-- 
2.49.0



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to