syzbot


KCSAN: data-race in filemap_read_folio / filemap_read_folio

Status: moderation: reported on 2025/05/02 23:00
Subsystems: serial
[Documentation on labels]
Reported-by: syzbot+7dbf7a0b5d0514f4e600@syzkaller.appspotmail.com
First crash: 1d11h, last: 1d11h

Sample crash report:
syz.3.414: attempt to access beyond end of device
loop3: rw=0, sector=2070, nr_sectors = 1 limit=128
Buffer I/O error on dev loop3, logical block 2070, async page read
==================================================================
BUG: KCSAN: data-race in filemap_read_folio / filemap_read_folio

read-write to 0xffff88810f85d160 of 4 bytes by task 4570 on cpu 0:
 shrink_readahead_size_eio mm/filemap.c:2343 [inline]
 filemap_read_folio+0xea/0x110 mm/filemap.c:2413
 filemap_fault+0x569/0xb40 mm/filemap.c:3495
 __do_fault+0xb9/0x200 mm/memory.c:5098
 do_read_fault mm/memory.c:5518 [inline]
 do_fault mm/memory.c:5652 [inline]
 do_pte_missing mm/memory.c:4160 [inline]
 handle_pte_fault mm/memory.c:5997 [inline]
 __handle_mm_fault mm/memory.c:6140 [inline]
 handle_mm_fault+0x110c/0x2ae0 mm/memory.c:6309
 do_user_addr_fault+0x3fe/0x1090 arch/x86/mm/fault.c:1388
 handle_page_fault arch/x86/mm/fault.c:1480 [inline]
 exc_page_fault+0x54/0xc0 arch/x86/mm/fault.c:1538
 asm_exc_page_fault+0x26/0x30 arch/x86/include/asm/idtentry.h:623
 rep_movs_alternative+0x4a/0x90 arch/x86/lib/copy_user_64.S:68
 copy_user_generic arch/x86/include/asm/uaccess_64.h:126 [inline]
 raw_copy_from_user arch/x86/include/asm/uaccess_64.h:141 [inline]
 copy_from_user_iter lib/iov_iter.c:55 [inline]
 iterate_ubuf include/linux/iov_iter.h:30 [inline]
 iterate_and_advance2 include/linux/iov_iter.h:300 [inline]
 iterate_and_advance include/linux/iov_iter.h:328 [inline]
 __copy_from_iter lib/iov_iter.c:249 [inline]
 _copy_from_iter+0x141/0xdd0 lib/iov_iter.c:260
 copy_from_iter include/linux/uio.h:228 [inline]
 iterate_tty_write drivers/tty/tty_io.c:1012 [inline]
 file_tty_write+0x32f/0x670 drivers/tty/tty_io.c:1090
 tty_write+0x25/0x30 drivers/tty/tty_io.c:1111
 new_sync_write fs/read_write.c:591 [inline]
 vfs_write+0x49d/0x8d0 fs/read_write.c:684
 ksys_write+0xda/0x1a0 fs/read_write.c:736
 __do_sys_write fs/read_write.c:747 [inline]
 __se_sys_write fs/read_write.c:744 [inline]
 __x64_sys_write+0x40/0x50 fs/read_write.c:744
 x64_sys_call+0x2cdd/0x2fb0 arch/x86/include/generated/asm/syscalls_64.h:2
 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
 do_syscall_64+0xd0/0x1a0 arch/x86/entry/syscall_64.c:94
 entry_SYSCALL_64_after_hwframe+0x77/0x7f

read-write to 0xffff88810f85d160 of 4 bytes by task 4565 on cpu 1:
 shrink_readahead_size_eio mm/filemap.c:2343 [inline]
 filemap_read_folio+0xea/0x110 mm/filemap.c:2413
 filemap_fault+0x569/0xb40 mm/filemap.c:3495
 __do_fault+0xb9/0x200 mm/memory.c:5098
 do_read_fault mm/memory.c:5518 [inline]
 do_fault mm/memory.c:5652 [inline]
 do_pte_missing mm/memory.c:4160 [inline]
 handle_pte_fault mm/memory.c:5997 [inline]
 __handle_mm_fault mm/memory.c:6140 [inline]
 handle_mm_fault+0x110c/0x2ae0 mm/memory.c:6309
 do_user_addr_fault+0x793/0x1090 arch/x86/mm/fault.c:1388
 handle_page_fault arch/x86/mm/fault.c:1480 [inline]
 exc_page_fault+0x54/0xc0 arch/x86/mm/fault.c:1538
 asm_exc_page_fault+0x26/0x30 arch/x86/include/asm/idtentry.h:623
 fault_in_readable+0xfe/0x1b0 mm/gup.c:-1
 fault_in_iov_iter_readable+0x129/0x210 lib/iov_iter.c:94
 generic_perform_write+0x3cf/0x490 mm/filemap.c:4152
 __generic_file_write_iter+0xec/0x120 mm/filemap.c:4217
 generic_file_write_iter+0x8d/0x2f0 mm/filemap.c:4246
 new_sync_write fs/read_write.c:591 [inline]
 vfs_write+0x49d/0x8d0 fs/read_write.c:684
 ksys_write+0xda/0x1a0 fs/read_write.c:736
 __do_sys_write fs/read_write.c:747 [inline]
 __se_sys_write fs/read_write.c:744 [inline]
 __x64_sys_write+0x40/0x50 fs/read_write.c:744
 x64_sys_call+0x2cdd/0x2fb0 arch/x86/include/generated/asm/syscalls_64.h:2
 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
 do_syscall_64+0xd0/0x1a0 arch/x86/entry/syscall_64.c:94
 entry_SYSCALL_64_after_hwframe+0x77/0x7f

value changed: 0x00000008 -> 0x00000002

Reported by Kernel Concurrency Sanitizer on:
CPU: 1 UID: 0 PID: 4565 Comm: syz.3.414 Not tainted 6.15.0-rc4-syzkaller-00189-g2bfcee565c3a #0 PREEMPT(voluntary) 
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 04/19/2025
==================================================================

Crashes (1):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2025/05/02 22:59 upstream 2bfcee565c3a b0714e37 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in filemap_read_folio / filemap_read_folio
* Struck through repros no longer work on HEAD.