==================================================================
BUG: KCSAN: data-race in __xa_set_mark / xas_find_marked

write to 0xffff8881066bbe14 of 4 bytes by task 16324 on cpu 1:
 xa_mark_set lib/xarray.c:71 [inline]
 xas_set_mark lib/xarray.c:899 [inline]
 __xa_set_mark+0x182/0x1b0 lib/xarray.c:1943
 __folio_mark_dirty+0x3b5/0x4e0 mm/page-writeback.c:2798
 mark_buffer_dirty+0x134/0x230 fs/buffer.c:1196
 __block_commit_write fs/buffer.c:2189 [inline]
 block_write_end+0x123/0x210 fs/buffer.c:2265
 generic_write_end+0x5c/0x160 fs/buffer.c:2279
 fat_write_end+0x4e/0x160 fs/fat/inode.c:242
 generic_perform_write+0x33c/0x4a0 mm/filemap.c:4204
 __generic_file_write_iter+0xa1/0x120 mm/filemap.c:4290
 generic_file_write_iter+0x8f/0x310 mm/filemap.c:4316
 iter_file_splice_write+0x5f1/0x980 fs/splice.c:743
 do_splice_from fs/splice.c:941 [inline]
 direct_splice_actor+0x160/0x2c0 fs/splice.c:1164
 splice_direct_to_actor+0x302/0x670 fs/splice.c:1108
 do_splice_direct_actor fs/splice.c:1207 [inline]
 do_splice_direct+0xd7/0x150 fs/splice.c:1233
 do_sendfile+0x398/0x660 fs/read_write.c:1363
 __do_sys_sendfile64 fs/read_write.c:1424 [inline]
 __se_sys_sendfile64 fs/read_write.c:1410 [inline]
 __x64_sys_sendfile64+0x110/0x150 fs/read_write.c:1410
 x64_sys_call+0xfbd/0x2dc0 arch/x86/include/generated/asm/syscalls_64.h:41
 do_syscall_x64 arch/x86/entry/common.c:52 [inline]
 do_syscall_64+0xc9/0x1c0 arch/x86/entry/common.c:83
 entry_SYSCALL_64_after_hwframe+0x77/0x7f

read to 0xffff8881066bbe14 of 4 bytes by task 16330 on cpu 0:
 xa_marked include/linux/xarray.h:424 [inline]
 xas_find_marked+0x608/0x650 lib/xarray.c:1350
 find_get_entry+0x54/0x390 mm/filemap.c:2017
 filemap_get_folios_tag+0x9e/0x210 mm/filemap.c:2284
 __filemap_fdatawait_range mm/filemap.c:533 [inline]
 file_write_and_wait_range+0x204/0x2f0 mm/filemap.c:801
 __generic_file_fsync+0x46/0x140 fs/libfs.c:1525
 fat_file_fsync+0x46/0x100 fs/fat/file.c:191
 vfs_fsync_range+0x116/0x130 fs/sync.c:187
 generic_write_sync include/linux/fs.h:2970 [inline]
 generic_file_write_iter+0x1c3/0x310 mm/filemap.c:4320
 iter_file_splice_write+0x5f1/0x980 fs/splice.c:743
 do_splice_from fs/splice.c:941 [inline]
 direct_splice_actor+0x160/0x2c0 fs/splice.c:1164
 splice_direct_to_actor+0x302/0x670 fs/splice.c:1108
 do_splice_direct_actor fs/splice.c:1207 [inline]
 do_splice_direct+0xd7/0x150 fs/splice.c:1233
 do_sendfile+0x398/0x660 fs/read_write.c:1363
 __do_sys_sendfile64 fs/read_write.c:1424 [inline]
 __se_sys_sendfile64 fs/read_write.c:1410 [inline]
 __x64_sys_sendfile64+0x110/0x150 fs/read_write.c:1410
 x64_sys_call+0xfbd/0x2dc0 arch/x86/include/generated/asm/syscalls_64.h:41
 do_syscall_x64 arch/x86/entry/common.c:52 [inline]
 do_syscall_64+0xc9/0x1c0 arch/x86/entry/common.c:83
 entry_SYSCALL_64_after_hwframe+0x77/0x7f

value changed: 0x04000021 -> 0x0e000021

Reported by Kernel Concurrency Sanitizer on:
CPU: 0 UID: 0 PID: 16330 Comm: syz.2.4452 Not tainted 6.14.0-rc2-syzkaller-00281-g496659003dac #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 12/27/2024
==================================================================
==================================================================
BUG: KCSAN: data-race in xas_find_marked / xas_set_mark

write to 0xffff8881066bbe14 of 4 bytes by task 16324 on cpu 0:
 xa_mark_set lib/xarray.c:71 [inline]
 xas_set_mark+0x131/0x150 lib/xarray.c:899
 __folio_start_writeback+0x1e8/0x430 mm/page-writeback.c:3126
 __block_write_full_folio+0x506/0x8c0 fs/buffer.c:1899
 block_write_full_folio+0x293/0x2b0
 __mpage_writepage+0xcfe/0xe10 fs/mpage.c:639
 write_cache_pages+0x62/0x100 mm/page-writeback.c:2644
 mpage_writepages+0x72/0xf0 fs/mpage.c:666
 fat_writepages+0x24/0x30 fs/fat/inode.c:199
 do_writepages+0x1d8/0x480 mm/page-writeback.c:2687
 filemap_fdatawrite_wbc mm/filemap.c:389 [inline]
 __filemap_fdatawrite_range mm/filemap.c:422 [inline]
 file_write_and_wait_range+0x168/0x2f0 mm/filemap.c:797
 __generic_file_fsync+0x46/0x140 fs/libfs.c:1525
 fat_file_fsync+0x46/0x100 fs/fat/file.c:191
 vfs_fsync_range+0x116/0x130 fs/sync.c:187
 generic_write_sync include/linux/fs.h:2970 [inline]
 generic_file_write_iter+0x1c3/0x310 mm/filemap.c:4320
 iter_file_splice_write+0x5f1/0x980 fs/splice.c:743
 do_splice_from fs/splice.c:941 [inline]
 direct_splice_actor+0x160/0x2c0 fs/splice.c:1164
 splice_direct_to_actor+0x302/0x670 fs/splice.c:1108
 do_splice_direct_actor fs/splice.c:1207 [inline]
 do_splice_direct+0xd7/0x150 fs/splice.c:1233
 do_sendfile+0x398/0x660 fs/read_write.c:1363
 __do_sys_sendfile64 fs/read_write.c:1424 [inline]
 __se_sys_sendfile64 fs/read_write.c:1410 [inline]
 __x64_sys_sendfile64+0x110/0x150 fs/read_write.c:1410
 x64_sys_call+0xfbd/0x2dc0 arch/x86/include/generated/asm/syscalls_64.h:41
 do_syscall_x64 arch/x86/entry/common.c:52 [inline]
 do_syscall_64+0xc9/0x1c0 arch/x86/entry/common.c:83
 entry_SYSCALL_64_after_hwframe+0x77/0x7f

read to 0xffff8881066bbe14 of 4 bytes by task 16330 on cpu 1:
 xa_marked include/linux/xarray.h:424 [inline]
 xas_find_marked+0x608/0x650 lib/xarray.c:1350
 find_get_entry+0x54/0x390 mm/filemap.c:2017
 filemap_get_folios_tag+0x9e/0x210 mm/filemap.c:2284
 writeback_get_folio mm/page-writeback.c:2493 [inline]
 writeback_iter+0x4b0/0x830 mm/page-writeback.c:2594
 write_cache_pages+0x4b/0x100 mm/page-writeback.c:2643
 mpage_writepages+0x72/0xf0 fs/mpage.c:666
 fat_writepages+0x24/0x30 fs/fat/inode.c:199
 do_writepages+0x1d8/0x480 mm/page-writeback.c:2687
 filemap_fdatawrite_wbc mm/filemap.c:389 [inline]
 __filemap_fdatawrite_range mm/filemap.c:422 [inline]
 file_write_and_wait_range+0x168/0x2f0 mm/filemap.c:797
 __generic_file_fsync+0x46/0x140 fs/libfs.c:1525
 fat_file_fsync+0x46/0x100 fs/fat/file.c:191
 vfs_fsync_range+0x116/0x130 fs/sync.c:187
 generic_write_sync include/linux/fs.h:2970 [inline]
 generic_file_write_iter+0x1c3/0x310 mm/filemap.c:4320
 iter_file_splice_write+0x5f1/0x980 fs/splice.c:743
 do_splice_from fs/splice.c:941 [inline]
 direct_splice_actor+0x160/0x2c0 fs/splice.c:1164
 splice_direct_to_actor+0x302/0x670 fs/splice.c:1108
 do_splice_direct_actor fs/splice.c:1207 [inline]
 do_splice_direct+0xd7/0x150 fs/splice.c:1233
 do_sendfile+0x398/0x660 fs/read_write.c:1363
 __do_sys_sendfile64 fs/read_write.c:1424 [inline]
 __se_sys_sendfile64 fs/read_write.c:1410 [inline]
 __x64_sys_sendfile64+0x110/0x150 fs/read_write.c:1410
 x64_sys_call+0xfbd/0x2dc0 arch/x86/include/generated/asm/syscalls_64.h:41
 do_syscall_x64 arch/x86/entry/common.c:52 [inline]
 do_syscall_64+0xc9/0x1c0 arch/x86/entry/common.c:83
 entry_SYSCALL_64_after_hwframe+0x77/0x7f

value changed: 0x0a000021 -> 0x04000021

Reported by Kernel Concurrency Sanitizer on:
CPU: 1 UID: 0 PID: 16330 Comm: syz.2.4452 Not tainted 6.14.0-rc2-syzkaller-00281-g496659003dac #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 12/27/2024
==================================================================