KCSAN: data-race in advance_sched / netdev_set_num_tc (2)

Status: upstream: reported on 2026/08/12 08:52
Subsystems: net
Labels: race:benign prio:low
[Documentation on labels]
Reported-by: syzbot+a181d44496a497911353@syzkaller.appspotmail.com
First crash: 4d02h, last: 4d02h
✨ AI Jobs (2)
ID Workflow Result Correct Bug Created Started Finished Revision
8250718a assessment-security DenialOfService: ❌ Exploitable: ❌ FilesystemTrigger: ❌ NetworkTrigger: ❌ PeripheralTrigger: ❌ RemoteTrigger: ❌ Unprivileged: ❌ UserNamespace: ✅ VMGuestTrigger: ❌ VMHostTrigger: ❌ KCSAN: data-race in advance_sched / netdev_set_num_tc (2) 2026/08/11 00:00 2026/08/11 00:00 2026/08/11 00:36 039457bd
8c5ef03e assessment-kcsan Benign: ✅ KCSAN: data-race in advance_sched / netdev_set_num_tc (2) 2026/08/09 15:44 2026/08/09 15:44 2026/08/09 16:09 5d63f80b
Discussions (2)
Title Replies (including bot) Last reply
[PATCH net-next 0/3] net: prevent lockless data races in net_device TC structures 1 (1) 2026/08/12 08:54
[syzbot] [net?] KCSAN: data-race in advance_sched / netdev_set_num_tc (2) 0 (1) 2026/08/12 08:52
Similar bugs (1)
Kernel Title Rank 🛈 Repro Cause bisect Fix bisect Count Last Reported Patched Status
upstream KCSAN: data-race in advance_sched / netdev_set_num_tc race:benign prio:low net 6 1 65d 65d 0/29 auto-obsoleted due to no activity on 2026/08/04 02:32

Sample crash report:
==================================================================
BUG: KCSAN: data-race in advance_sched / netdev_set_num_tc

write to 0xffff88811ac5c036 of 2 bytes by task 4421 on cpu 0:
 netdev_set_num_tc+0x1b2/0x1d0 net/core/dev.c:3117
 mqprio_init+0x68b/0xb90 net/sched/sch_mqprio.c:417
 qdisc_create+0x57f/0x9c0 net/sched/sch_api.c:1346
 __tc_modify_qdisc net/sched/sch_api.c:1780 [inline]
 tc_modify_qdisc+0x102a/0x1550 net/sched/sch_api.c:1844
 rtnetlink_rcv_msg+0x6a7/0x720 net/core/rtnetlink.c:7085
 netlink_rcv_skb+0x11e/0x220 net/netlink/af_netlink.c:2556
 rtnetlink_rcv+0x1c/0x30 net/core/rtnetlink.c:7103
 netlink_unicast_kernel net/netlink/af_netlink.c:1319 [inline]
 netlink_unicast+0x5a7/0x680 net/netlink/af_netlink.c:1345
 netlink_sendmsg+0x5be/0x6f0 net/netlink/af_netlink.c:1900
 sock_sendmsg_nosec net/socket.c:775 [inline]
 __sock_sendmsg net/socket.c:790 [inline]
 ____sys_sendmsg+0x532/0x580 net/socket.c:2684
 ___sys_sendmsg+0x195/0x1e0 net/socket.c:2738
 __sys_sendmsg net/socket.c:2770 [inline]
 __do_sys_sendmsg net/socket.c:2775 [inline]
 __se_sys_sendmsg net/socket.c:2773 [inline]
 __x64_sys_sendmsg+0xd4/0x160 net/socket.c:2773
 x64_sys_call+0x194c/0x3020 arch/x86/include/generated/asm/syscalls_64.h:47
 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
 do_syscall_64+0x136/0x3c0 arch/x86/entry/syscall_64.c:94
 entry_SYSCALL_64_after_hwframe+0x77/0x7f

read to 0xffff88811ac5c036 of 2 bytes by interrupt on cpu 1:
 netdev_get_num_tc include/linux/netdevice.h:2684 [inline]
 taprio_set_budgets net/sched/sch_taprio.c:667 [inline]
 advance_sched+0x58f/0x730 net/sched/sch_taprio.c:984
 __run_hrtimer kernel/time/hrtimer.c:2032 [inline]
 __hrtimer_run_queues+0x1f8/0x510 kernel/time/hrtimer.c:2096
 hrtimer_interrupt+0x257/0x810 kernel/time/hrtimer.c:2215
 local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1051 [inline]
 __sysvec_apic_timer_interrupt+0x5f/0x1c0 arch/x86/kernel/apic/apic.c:1068
 instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1062 [inline]
 sysvec_apic_timer_interrupt+0x6f/0x80 arch/x86/kernel/apic/apic.c:1062
 asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:674
 encoded_page_ptr include/linux/mm_types.h:268 [inline]
 free_pages_and_swap_cache+0xe1/0x3b0 mm/swap_state.c:577
 __tlb_batch_free_encoded_pages mm/mmu_gather.c:138 [inline]
 tlb_batch_pages_flush mm/mmu_gather.c:151 [inline]
 tlb_flush_mmu_free mm/mmu_gather.c:417 [inline]
 tlb_flush_mmu+0x552/0x6d0 mm/mmu_gather.c:424
 zap_pte_range mm/memory.c:1973 [inline]
 zap_pmd_range mm/memory.c:2020 [inline]
 zap_pud_range mm/memory.c:2048 [inline]
 zap_p4d_range mm/memory.c:2069 [inline]
 __zap_vma_range+0x2521/0x2c70 mm/memory.c:2109
 unmap_vmas+0x200/0x310 mm/memory.c:2178
 exit_mmap+0x1a2/0x5e0 mm/mmap.c:1300
 __mmput+0x28/0x1c0 kernel/fork.c:1187
 mmput+0x40/0x50 kernel/fork.c:1210
 exit_mm+0x113/0x1a0 kernel/exit.c:615
 do_exit+0x438/0x1500 kernel/exit.c:997
 do_group_exit+0xfe/0x140 kernel/exit.c:1152
 get_signal+0xe07/0xf10 kernel/signal.c:3046
 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+0x15d/0x8c0 kernel/entry/common.c:101
 __exit_to_user_mode_prepare include/linux/irq-entry-common.h:207 [inline]
 syscall_exit_to_user_mode_prepare include/linux/irq-entry-common.h:230 [inline]
 syscall_exit_to_user_mode include/linux/entry-common.h:318 [inline]
 do_syscall_64+0x23c/0x3c0 arch/x86/entry/syscall_64.c:100
 entry_SYSCALL_64_after_hwframe+0x77/0x7f

value changed: 0x0000 -> 0x0001

Reported by Kernel Concurrency Sanitizer on:
CPU: 1 UID: 0 PID: 4434 Comm: syz.1.244 Not tainted syzkaller #0 PREEMPT(lazy) 
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/24/2026
==================================================================

Crashes (1):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2026/08/09 15:02 upstream 06cf61899d64 5d63f80b .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in advance_sched / netdev_set_num_tc
* Struck through repros no longer work on HEAD.