Re: [syzbot] [exfat?] WARNING in fat12_ent_put

OGAWA Hirofumi <[email protected]>
Newsgroups org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
syzbot <[email protected]> writes:

> Hello,
>
> syzbot found the following issue on:
>
> HEAD commit:    28d012efb432 Add linux-next specific files for 20260812
> git tree:       linux-next
> console output: https://syzkaller.appspot.com/x/log.txt?x=104eec79580000
> kernel config:  https://syzkaller.appspot.com/x/.config?x=5a13c7bc480b5c3f
> dashboard link: https://syzkaller.appspot.com/bug?extid=e64c6472a3d96a75172a
> compiler:       Debian clang version 22.1.8 (++20260613092233+e80beda6e255-1~exp1~20260613092250.77), Debian LLD 22.1.8
>
> Unfortunately, I don't have any reproducer for this issue yet.
>
> Downloadable assets:
> disk image: https://storage.googleapis.com/syzbot-assets/de882be6df4b/disk-28d012ef.raw.xz
> vmlinux: https://storage.googleapis.com/syzbot-assets/412cb9fb7e2d/vmlinux-28d012ef.xz
> kernel image: https://storage.googleapis.com/syzbot-assets/9d7096c27f1b/bzImage-28d012ef.xz
>
> IMPORTANT: if you fix the issue, please add the following tag to the commit:
> Reported-by: [email protected]

https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git/commit/fs/fat/misc.c?h=mm-nonmm-unstable&id=64d9183203eebe33de6188b70a8c1e91f52885db (fat: restore original value when fat_ent_write failed)

This commit was missing to consider about the path of error by sync
write.  Since current bh write clears uptodate flag if got I/O error, so
this patch doesn't work for now with wait==true.

Please drop this patch at least until stop clearing the uptodate by bh
sync write and buffer is reusable after the error.

Thanks.

> Buffer I/O error on dev loop0, logical block 1, lost sync page write
> ------------[ cut here ]------------
> !buffer_uptodate(bh)
> WARNING: fs/buffer.c:991 at mark_buffer_dirty+0x299/0x410 fs/buffer.c:991, CPU#1: syz.0.824/10458
> Modules linked in:
> CPU: 1 UID: 0 PID: 10458 Comm: syz.0.824 Not tainted syzkaller #0 PREEMPT(full) 
> Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/24/2026
> RIP: 0010:mark_buffer_dirty+0x299/0x410 fs/buffer.c:991
> Code: 4c 89 f7 e8 49 11 d8 ff 49 8b 3e be 40 00 00 00 5b 41 5c 41 5e 41 5f 5d e9 34 53 fb ff e8 9f a3 69 ff eb 8c e8 98 a3 69 ff 90 <0f> 0b 90 e9 a5 fd ff ff e8 8a a3 69 ff 90 0f 0b 90 e9 cf fd ff ff
> RSP: 0018:ffffc900065273f8 EFLAGS: 00010287
> RAX: ffffffff825e07c8 RBX: ffff888056e9e460 RCX: 0000000000080000
> RDX: ffffc90003f49000 RSI: 0000000000001234 RDI: 0000000000001235
> RBP: dffffc0000000001 R08: ffff888056e9e467 R09: 1ffff1100add3c8c
> R10: dffffc0000000000 R11: ffffed100add3c8d R12: dffffc0000000000
> R13: 1ffff92000ca4eb6 R14: ffffc900065275b0 R15: ffff888050e4ccf8
> FS:  00007fe3dc5436c0(0000) GS:ffff888124dfc000(0000) knlGS:0000000000000000
> CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 0000001b2e6edff8 CR3: 000000007c12c000 CR4: 00000000003526f0
> Call Trace:
>  <TASK>
>  mmb_mark_buffer_dirty+0x2c/0x1f0 fs/buffer.c:624
>  fat12_ent_put+0x1b7/0x2f0 fs/fat/fatent.c:173
>  fat_ent_write+0xb8/0x190 fs/fat/fatent.c:422
>  fat_chain_add+0x409/0x8e0 fs/fat/misc.c:140
>  fat_add_cluster fs/fat/inode.c:113 [inline]
>  __fat_get_block fs/fat/inode.c:155 [inline]
>  fat_get_block+0x768/0xae0 fs/fat/inode.c:190
>  __block_write_begin_int+0x6c2/0x1900 fs/buffer.c:2030
>  block_write_begin fs/buffer.c:2144 [inline]
>  cont_write_begin+0x71b/0xac0 fs/buffer.c:2506
>  fat_write_begin+0x7a/0x150 fs/fat/inode.c:230
>  cont_expand_zero fs/buffer.c:2434 [inline]
>  cont_write_begin+0x2d6/0xac0 fs/buffer.c:2496
>  fat_write_begin+0x7a/0x150 fs/fat/inode.c:230
>  generic_cont_expand_simple+0x146/0x210 fs/buffer.c:2397
>  fat_cont_expand+0x61/0x1f0 fs/fat/file.c:226
>  fat_fallocate+0x22f/0x2f0 fs/fat/file.c:304
>  vfs_fallocate+0x65a/0x7e0 fs/open.c:338
>  ksys_fallocate fs/open.c:362 [inline]
>  __do_sys_fallocate fs/open.c:367 [inline]
>  __se_sys_fallocate fs/open.c:365 [inline]
>  __x64_sys_fallocate+0xbf/0x110 fs/open.c:365
>  do_syscall_x64 arch/x86/entry/syscall_64.c:61 [inline]
>  do_syscall_64+0x166/0x520 arch/x86/entry/syscall_64.c:84
>  entry_SYSCALL_64_after_hwframe+0x77/0x7f
> RIP: 0033:0x7fe3db59e0d9
> Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 e8 ff ff ff f7 d8 64 89 01 48
> RSP: 002b:00007fe3dc543028 EFLAGS: 00000246 ORIG_RAX: 000000000000011d
> RAX: ffffffffffffffda RBX: 00007fe3db825fa0 RCX: 00007fe3db59e0d9
> RDX: 0000000000000009 RSI: 0000000000000000 RDI: 0000000000000004
> RBP: 00007fe3db635024 R08: 0000000000000000 R09: 0000000000000000
> R10: 0000000000010001 R11: 0000000000000246 R12: 0000000000000000
> R13: 00007fe3db826038 R14: 00007fe3db825fa0 R15: 00007fffaef17d98
>  </TASK>
>
>
> ---
> This report is generated by a bot. It may contain errors.
> See https://goo.gl/tpsmEJ for more information about syzbot.
> syzbot engineers can be reached at [email protected].
>
> syzbot will keep track of this issue. See:
> https://goo.gl/tpsmEJ#status for how to communicate with syzbot.
>
> If the report is already addressed, let syzbot know by replying with:
> #syz fix: exact-commit-title
>
> If you want to overwrite report's subsystems, reply with:
> #syz set subsystems: new-subsystem
> (See the list of subsystem names on the web dashboard)
>
> If the report is a duplicate of another one, reply with:
> #syz dup: exact-subject-of-another-report
>
> If you want to undo deduplication, reply with:
> #syz undup

-- 
OGAWA Hirofumi <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.