KCSAN: data-race in __percpu_counter_limited_add / percpu_counter_add_batch (3)

Status: upstream: reported on 2026/06/19 22:36
Subsystems: mm
Labels: race:harmful prio:low
[Documentation on labels]
Reported-by: syzbot+a3c71b9db9c11c270f59@syzkaller.appspotmail.com
First crash: 92d, last: 5d16h
✨ AI Jobs (2)
ID Workflow Result Correct Bug Created Started Finished Revision
2b43d460 assessment-security DenialOfService: ❌ Exploitable: ❌ FilesystemTrigger: ❌ NetworkTrigger: ❌ PeripheralTrigger: ❌ RemoteTrigger: ❌ Unprivileged: ✅ UserNamespace: ✅ VMGuestTrigger: ❌ VMHostTrigger: ❌ KCSAN: data-race in __percpu_counter_limited_add / percpu_counter_add_batch (3) 2026/06/21 00:01 2026/06/21 00:01 2026/06/21 00:02 43bfcdb0
de958f61 assessment-kcsan Benign: ❌ KCSAN: data-race in __percpu_counter_limited_add / percpu_counter_add_batch (3) 2026/06/19 22:08 2026/06/19 22:08 2026/06/19 22:35 023e42b5
Discussions (1)
Title Replies (including bot) Last reply
[syzbot] [mm?] KCSAN: data-race in __percpu_counter_limited_add / percpu_counter_add_batch (3) 0 (1) 2026/06/19 22:36
Similar bugs (2)
Kernel Title Rank 🛈 Repro Cause bisect Fix bisect Count Last Reported Patched Status
upstream KCSAN: data-race in __percpu_counter_limited_add / percpu_counter_add_batch (2) mm 6 1 692d 692d 0/29 auto-obsoleted due to no activity on 2024/12/23 03:58
upstream KCSAN: data-race in __percpu_counter_limited_add / percpu_counter_add_batch mm 6 1 1006d 1006d 0/29 auto-obsoleted due to no activity on 2024/01/23 11:04

Sample crash report:
==================================================================
BUG: KCSAN: data-race in __percpu_counter_limited_add / percpu_counter_add_batch

read-write to 0xffff88811a79b310 of 8 bytes by task 4270 on cpu 0:
 percpu_counter_add_batch+0x101/0x120 lib/percpu_counter.c:107
 percpu_counter_add include/linux/percpu_counter.h:71 [inline]
 percpu_counter_sub include/linux/percpu_counter.h:277 [inline]
 shmem_inode_unacct_blocks mm/shmem.c:264 [inline]
 shmem_recalc_inode+0x143/0x1f0 mm/shmem.c:467
 shmem_undo_range+0xb20/0xb60 mm/shmem.c:1284
 shmem_truncate_range mm/shmem.c:1289 [inline]
 shmem_evict_inode+0x12d/0x580 mm/shmem.c:1420
 evict+0x2a5/0x510 fs/inode.c:822
 iput_final fs/inode.c:2015 [inline]
 iput+0x430/0x5a0 fs/inode.c:2064
 dentry_unlink_inode+0x24a/0x260 fs/dcache.c:479
 dentry_kill+0x184/0x500 fs/dcache.c:826
 finish_dput+0x16/0x1d0 fs/dcache.c:1001
 dput+0x48/0x50 fs/dcache.c:1042
 __fput+0x43e/0x630 fs/file_table.c:520
 ____fput+0x1c/0x30 fs/file_table.c:540
 task_work_run+0x130/0x1a0 kernel/task_work.c:233
 exit_task_work include/linux/task_work.h:40 [inline]
 do_exit+0x4a4/0x1510 kernel/exit.c:1011
 do_group_exit+0xfe/0x140 kernel/exit.c:1154
 get_signal+0xe07/0xf10 kernel/signal.c:3051
 arch_do_signal_or_restart+0x96/0x480 arch/x86/kernel/signal.c:337
 __exit_to_user_mode_loop kernel/entry/common.c:66 [inline]
 exit_to_user_mode_loop kernel/entry/common.c:101 [inline]
 __exit_to_user_mode_prepare include/linux/irq-entry-common.h:207 [inline]
 irqentry_exit_to_user_mode_prepare include/linux/irq-entry-common.h:244 [inline]
 irqentry_exit_to_user_mode include/linux/irq-entry-common.h:315 [inline]
 irqentry_exit+0x14d/0x610 kernel/entry/common.c:165
 asm_exc_page_fault+0x26/0x30 arch/x86/include/asm/idtentry.h:595

read to 0xffff88811a79b310 of 8 bytes by task 4378 on cpu 1:
 __percpu_counter_limited_add+0xc4/0x3f0 lib/percpu_counter.c:-1
 percpu_counter_limited_add include/linux/percpu_counter.h:77 [inline]
 shmem_inode_acct_blocks+0xf4/0x230 mm/shmem.c:233
 shmem_alloc_and_add_folio mm/shmem.c:2005 [inline]
 shmem_get_folio_gfp+0x5d3/0xd90 mm/shmem.c:2528
 shmem_get_folio mm/shmem.c:2634 [inline]
 shmem_write_begin+0xfc/0x1f0 mm/shmem.c:3265
 generic_perform_write+0x186/0x490 mm/filemap.c:4374
 shmem_file_write_iter+0xc5/0xf0 mm/shmem.c:3440
 __kernel_write_iter+0x30f/0x590 fs/read_write.c:621
 dump_emit_page fs/coredump.c:1293 [inline]
 dump_user_range+0xa73/0xd00 fs/coredump.c:1367
 elf_core_dump+0x21c0/0x2340 fs/binfmt_elf.c:2106
 coredump_write+0xafb/0xdd0 fs/coredump.c:1047
 do_coredump fs/coredump.c:1126 [inline]
 vfs_coredump+0x2762/0x3270 fs/coredump.c:1195
 get_signal+0xd33/0xf10 kernel/signal.c:3036
 arch_do_signal_or_restart+0x96/0x480 arch/x86/kernel/signal.c:337
 __exit_to_user_mode_loop kernel/entry/common.c:66 [inline]
 exit_to_user_mode_loop kernel/entry/common.c:101 [inline]
 __exit_to_user_mode_prepare include/linux/irq-entry-common.h:207 [inline]
 irqentry_exit_to_user_mode_prepare include/linux/irq-entry-common.h:244 [inline]
 irqentry_exit_to_user_mode include/linux/irq-entry-common.h:315 [inline]
 irqentry_exit+0x14d/0x610 kernel/entry/common.c:165
 asm_exc_page_fault+0x26/0x30 arch/x86/include/asm/idtentry.h:595

value changed: 0x0000000000006378 -> 0x0000000000002345

Reported by Kernel Concurrency Sanitizer on:
CPU: 1 UID: 0 PID: 4378 Comm: syz.3.236 Not tainted syzkaller #0 PREEMPT(lazy) 
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/24/2026
==================================================================
syz.3.236 (4378) used greatest stack depth: 9912 bytes left

Crashes (3):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2026/09/15 04:27 upstream 587858367581 81a27d1a .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __percpu_counter_limited_add / percpu_counter_add_batch
2026/08/04 19:51 upstream 562bfb501c54 d4abbeac .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __percpu_counter_limited_add / percpu_counter_add_batch
2026/06/19 22:08 upstream 5e2e14749c3d 43bfcdb0 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __percpu_counter_limited_add / percpu_counter_add_batch
* Struck through repros no longer work on HEAD.