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