syzbot


KCSAN: data-race in __filemap_add_folio / file_write_and_wait_range (8)

Status: moderation: reported on 2026/01/09 13:51
Subsystems: exfat
[Documentation on labels]
Reported-by: syzbot+29aa8c66783fd2588e08@syzkaller.appspotmail.com
First crash: 2d10h, last: 2d10h
Similar bugs (7)
Kernel Title Rank 🛈 Repro Cause bisect Fix bisect Count Last Reported Patched Status
upstream KCSAN: data-race in __filemap_add_folio / file_write_and_wait_range (5) mm 6 12 574d 690d 0/29 auto-obsoleted due to no activity on 2024/07/21 21:55
upstream KCSAN: data-race in __filemap_add_folio / file_write_and_wait_range mm 6 90 995d 1524d 0/29 auto-obsoleted due to no activity on 2023/05/27 02:10
upstream KCSAN: data-race in __filemap_add_folio / file_write_and_wait_range (6) fs mm 6 1 474d 474d 0/29 auto-obsoleted due to no activity on 2024/10/29 01:04
upstream KCSAN: data-race in __filemap_add_folio / file_write_and_wait_range (3) mm 6 4 775d 764d 0/29 auto-obsoleted due to no activity on 2024/01/02 05:06
upstream KCSAN: data-race in __filemap_add_folio / file_write_and_wait_range (4) mm fs 6 2 735d 733d 0/29 auto-obsoleted due to no activity on 2024/02/11 21:27
upstream KCSAN: data-race in __filemap_add_folio / file_write_and_wait_range (2) ext4 6 4 863d 874d 0/29 auto-obsoleted due to no activity on 2023/10/06 06:01
upstream KCSAN: data-race in __filemap_add_folio / file_write_and_wait_range (7) exfat 6 1 326d 326d 0/29 auto-obsoleted due to no activity on 2025/04/16 15:48

Sample crash report:
netlink: 4 bytes leftover after parsing attributes in process `syz.0.5751'.
FAT-fs (loop0): error, invalid access to FAT (entry 0x0fff0000)
FAT-fs (loop0): Filesystem has been set read-only
==================================================================
BUG: KCSAN: data-race in __filemap_add_folio / file_write_and_wait_range

read-write to 0xffff888107321d60 of 8 bytes by task 29785 on cpu 1:
 __filemap_add_folio+0x5b9/0x7d0 mm/filemap.c:919
 filemap_add_folio+0x1d9/0x360 mm/filemap.c:966
 __filemap_get_folio_mpol+0x326/0x650 mm/filemap.c:2016
 __filemap_get_folio include/linux/pagemap.h:763 [inline]
 block_write_begin fs/buffer.c:2251 [inline]
 cont_write_begin+0x5cb/0x970 fs/buffer.c:2594
 fat_write_begin+0x4f/0xe0 fs/fat/inode.c:230
 generic_perform_write+0x184/0x490 mm/filemap.c:4314
 __generic_file_write_iter+0x9e/0x120 mm/filemap.c:4431
 generic_file_write_iter+0x8d/0x2f0 mm/filemap.c:4457
 iter_file_splice_write+0x66b/0xa20 fs/splice.c:738
 do_splice_from fs/splice.c:938 [inline]
 direct_splice_actor+0x156/0x2a0 fs/splice.c:1161
 splice_direct_to_actor+0x312/0x680 fs/splice.c:1105
 do_splice_direct_actor fs/splice.c:1204 [inline]
 do_splice_direct+0xda/0x150 fs/splice.c:1230
 do_sendfile+0x380/0x650 fs/read_write.c:1370
 __do_sys_sendfile64 fs/read_write.c:1431 [inline]
 __se_sys_sendfile64 fs/read_write.c:1417 [inline]
 __x64_sys_sendfile64+0x105/0x150 fs/read_write.c:1417
 x64_sys_call+0x2db1/0x3000 arch/x86/include/generated/asm/syscalls_64.h:41
 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
 do_syscall_64+0xca/0x2b0 arch/x86/entry/syscall_64.c:94
 entry_SYSCALL_64_after_hwframe+0x77/0x7f

read to 0xffff888107321d60 of 8 bytes by task 29779 on cpu 0:
 mapping_needs_writeback mm/filemap.c:634 [inline]
 file_write_and_wait_range+0x65/0x2c0 mm/filemap.c:785
 __generic_file_fsync+0x46/0x160 fs/libfs.c:1558
 fat_file_fsync+0x49/0x100 fs/fat/file.c:191
 vfs_fsync_range+0x10d/0x130 fs/sync.c:188
 generic_write_sync include/linux/fs.h:2616 [inline]
 generic_file_write_iter+0x1b8/0x2f0 mm/filemap.c:4461
 iter_file_splice_write+0x66b/0xa20 fs/splice.c:738
 do_splice_from fs/splice.c:938 [inline]
 direct_splice_actor+0x156/0x2a0 fs/splice.c:1161
 splice_direct_to_actor+0x312/0x680 fs/splice.c:1105
 do_splice_direct_actor fs/splice.c:1204 [inline]
 do_splice_direct+0xda/0x150 fs/splice.c:1230
 do_sendfile+0x380/0x650 fs/read_write.c:1370
 __do_sys_sendfile64 fs/read_write.c:1431 [inline]
 __se_sys_sendfile64 fs/read_write.c:1417 [inline]
 __x64_sys_sendfile64+0x105/0x150 fs/read_write.c:1417
 x64_sys_call+0x2db1/0x3000 arch/x86/include/generated/asm/syscalls_64.h:41
 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
 do_syscall_64+0xca/0x2b0 arch/x86/entry/syscall_64.c:94
 entry_SYSCALL_64_after_hwframe+0x77/0x7f

value changed: 0x0000000000000003 -> 0x0000000000000004

Reported by Kernel Concurrency Sanitizer on:
CPU: 0 UID: 0 PID: 29779 Comm: syz.0.5751 Tainted: G        W           syzkaller #0 PREEMPT(voluntary) 
Tainted: [W]=WARN
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/25/2025
==================================================================
syz.0.5751: attempt to access beyond end of device
loop0: rw=8390657, sector=128, nr_sectors = 1 limit=128
Buffer I/O error on dev loop0, logical block 128, lost async page write

Crashes (1):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2026/01/09 13:50 upstream 623fb9912f6a d6526ea3 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __filemap_add_folio / file_write_and_wait_range
* Struck through repros no longer work on HEAD.