syzbot


KCSAN: data-race in __neigh_event_send / neigh_resolve_output

Status: auto-closed as invalid on 2020/01/25 19:36
Subsystems: net
[Documentation on labels]
First crash: 1670d, last: 1646d
Similar bugs (6)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
upstream KCSAN: data-race in __neigh_event_send / neigh_resolve_output (6) net 2 854d 889d 0/26 auto-closed as invalid on 2022/02/20 22:06
upstream KCSAN: data-race in __neigh_event_send / neigh_resolve_output (4) net 1 1304d 1304d 0/26 auto-closed as invalid on 2020/11/28 17:46
upstream KCSAN: data-race in __neigh_event_send / neigh_resolve_output (2) net 1 1572d 1572d 0/26 auto-closed as invalid on 2020/04/08 18:47
upstream KCSAN: data-race in __neigh_event_send / neigh_resolve_output (3) net 1 1431d 1431d 0/26 auto-closed as invalid on 2020/07/24 05:33
upstream KCSAN: data-race in __neigh_event_send / neigh_resolve_output (5) net 2 1201d 1228d 0/26 auto-closed as invalid on 2021/03/11 01:25
upstream KCSAN: data-race in __neigh_event_send / neigh_resolve_output (7) net 43 404d 378d 22/26 fixed on 2023/06/08 14:41

Sample crash report:
==================================================================
BUG: KCSAN: data-race in __neigh_event_send / neigh_resolve_output

write to 0xffff8880a2ec2a85 of 1 bytes by interrupt on cpu 1:
 __neigh_event_send+0x185/0x9f0 net/core/neighbour.c:1128
 neigh_event_send include/net/neighbour.h:445 [inline]
 neigh_resolve_output+0x373/0x4a0 net/core/neighbour.c:1474
 neigh_output include/net/neighbour.h:511 [inline]
 ip_finish_output2+0x4af/0xe40 net/ipv4/ip_output.c:228
 __ip_finish_output net/ipv4/ip_output.c:308 [inline]
 __ip_finish_output+0x23a/0x490 net/ipv4/ip_output.c:290
 ip_finish_output+0x41/0x160 net/ipv4/ip_output.c:318
 NF_HOOK_COND include/linux/netfilter.h:294 [inline]
 ip_output+0xdf/0x210 net/ipv4/ip_output.c:432
 dst_output include/net/dst.h:436 [inline]
 ip_local_out+0x74/0x90 net/ipv4/ip_output.c:125
 __ip_queue_xmit+0x3a8/0xa40 net/ipv4/ip_output.c:532
 ip_queue_xmit+0x45/0x60 include/net/ip.h:237
 __tcp_transmit_skb+0xe81/0x1d60 net/ipv4/tcp_output.c:1169
 tcp_transmit_skb net/ipv4/tcp_output.c:1185 [inline]
 tcp_xmit_probe_skb+0x19b/0x1d0 net/ipv4/tcp_output.c:3735
 tcp_write_wakeup+0x12e/0x3b0 net/ipv4/tcp_output.c:3788
 tcp_send_probe0+0x3a/0x286 net/ipv4/tcp_output.c:3803
 tcp_probe_timer net/ipv4/tcp_timer.c:381 [inline]
 tcp_write_timer_handler+0x48e/0x510 net/ipv4/tcp_timer.c:603
 tcp_write_timer+0xd1/0xf0 net/ipv4/tcp_timer.c:619
 call_timer_fn+0x5f/0x2f0 kernel/time/timer.c:1404
 expire_timers kernel/time/timer.c:1449 [inline]
 __run_timers kernel/time/timer.c:1773 [inline]
 __run_timers kernel/time/timer.c:1740 [inline]
 run_timer_softirq+0xc0c/0xcd0 kernel/time/timer.c:1786
 __do_softirq+0x115/0x33f kernel/softirq.c:292
 invoke_softirq kernel/softirq.c:373 [inline]
 irq_exit+0xbb/0xe0 kernel/softirq.c:413
 exiting_irq arch/x86/include/asm/apic.h:536 [inline]
 smp_apic_timer_interrupt+0xe6/0x280 arch/x86/kernel/apic/apic.c:1137
 apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:830
 is_atomic kernel/kcsan/core.c:182 [inline]
 should_watch kernel/kcsan/core.c:211 [inline]
 check_access kernel/kcsan/core.c:465 [inline]
 __tsan_read1+0x8a/0x100 kernel/kcsan/core.c:593
 tomoyo_check_path_acl+0x3a/0xa0 security/tomoyo/file.c:258
 tomoyo_check_acl+0xf6/0x270 security/tomoyo/domain.c:172
 tomoyo_path_permission security/tomoyo/file.c:586 [inline]
 tomoyo_path_permission+0xe3/0x160 security/tomoyo/file.c:573
 tomoyo_path_perm+0x23e/0x390 security/tomoyo/file.c:838
 tomoyo_inode_getattr+0x26/0x40 security/tomoyo/tomoyo.c:129
 security_inode_getattr+0x9b/0xd0 security/security.c:1222
 vfs_getattr+0x2e/0x70 fs/stat.c:115
 vfs_statx_fd+0x7a/0xd0 fs/stat.c:145
 vfs_fstat include/linux/fs.h:3258 [inline]
 __do_sys_newfstat+0x49/0xa0 fs/stat.c:378
 __se_sys_newfstat fs/stat.c:375 [inline]
 __x64_sys_newfstat+0x3a/0x50 fs/stat.c:375
 do_syscall_64+0xcc/0x370 arch/x86/entry/common.c:290
 entry_SYSCALL_64_after_hwframe+0x44/0xa9

read to 0xffff8880a2ec2a85 of 1 bytes by interrupt on cpu 0:
 neigh_event_send include/net/neighbour.h:444 [inline]
 neigh_resolve_output+0xb5/0x4a0 net/core/neighbour.c:1474
 neigh_output include/net/neighbour.h:511 [inline]
 ip_finish_output2+0x4af/0xe40 net/ipv4/ip_output.c:228
 __ip_finish_output net/ipv4/ip_output.c:308 [inline]
 __ip_finish_output+0x23a/0x490 net/ipv4/ip_output.c:290
 ip_finish_output+0x41/0x160 net/ipv4/ip_output.c:318
 NF_HOOK_COND include/linux/netfilter.h:294 [inline]
 ip_output+0xdf/0x210 net/ipv4/ip_output.c:432
 dst_output include/net/dst.h:436 [inline]
 ip_local_out+0x74/0x90 net/ipv4/ip_output.c:125
 __ip_queue_xmit+0x3a8/0xa40 net/ipv4/ip_output.c:532
 ip_queue_xmit+0x45/0x60 include/net/ip.h:237
 __tcp_transmit_skb+0xe81/0x1d60 net/ipv4/tcp_output.c:1169
 tcp_transmit_skb net/ipv4/tcp_output.c:1185 [inline]
 tcp_xmit_probe_skb+0x19b/0x1d0 net/ipv4/tcp_output.c:3735
 tcp_write_wakeup+0x12e/0x3b0 net/ipv4/tcp_output.c:3788
 tcp_send_probe0+0x3a/0x286 net/ipv4/tcp_output.c:3803
 tcp_probe_timer net/ipv4/tcp_timer.c:381 [inline]
 tcp_write_timer_handler+0x48e/0x510 net/ipv4/tcp_timer.c:603
 tcp_write_timer+0xd1/0xf0 net/ipv4/tcp_timer.c:619
 call_timer_fn+0x5f/0x2f0 kernel/time/timer.c:1404
 expire_timers kernel/time/timer.c:1449 [inline]
 __run_timers kernel/time/timer.c:1773 [inline]
 __run_timers kernel/time/timer.c:1740 [inline]
 run_timer_softirq+0xc0c/0xcd0 kernel/time/timer.c:1786
 __do_softirq+0x115/0x33f kernel/softirq.c:292
 invoke_softirq kernel/softirq.c:373 [inline]
 irq_exit+0xbb/0xe0 kernel/softirq.c:413
 exiting_irq arch/x86/include/asm/apic.h:536 [inline]
 smp_apic_timer_interrupt+0xe6/0x280 arch/x86/kernel/apic/apic.c:1137
 apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:830
 __tsan_read4+0xc7/0x100 kernel/kcsan/core.c:595
 rcu_read_unlock include/linux/rcupdate.h:652 [inline]
 __unlock_page_memcg+0x42/0xa0 mm/memcontrol.c:2136
 unlock_page_memcg+0x23/0x30 mm/memcontrol.c:2145
 page_remove_file_rmap mm/rmap.c:1254 [inline]
 page_remove_rmap+0x377/0x770 mm/rmap.c:1305
 zap_pte_range mm/memory.c:1062 [inline]
 zap_pmd_range mm/memory.c:1166 [inline]
 zap_pud_range mm/memory.c:1195 [inline]
 zap_p4d_range mm/memory.c:1216 [inline]
 unmap_page_range+0xbab/0x18d0 mm/memory.c:1237
 unmap_single_vma+0x144/0x200 mm/memory.c:1282
 unmap_vmas+0xda/0x1a0 mm/memory.c:1314
 exit_mmap+0x13e/0x300 mm/mmap.c:3161
 __mmput kernel/fork.c:1079 [inline]
 mmput+0xea/0x280 kernel/fork.c:1100
 exit_mm kernel/exit.c:485 [inline]
 do_exit+0x4c9/0x18f0 kernel/exit.c:804
 do_group_exit+0xb4/0x1c0 kernel/exit.c:921
 get_signal+0x2a2/0x1320 kernel/signal.c:2734
 do_signal+0x2f/0x6c0 arch/x86/kernel/signal.c:815
 exit_to_usermode_loop+0x250/0x2c0 arch/x86/entry/common.c:159
 prepare_exit_to_usermode arch/x86/entry/common.c:194 [inline]
 syscall_return_slowpath arch/x86/entry/common.c:274 [inline]
 do_syscall_64+0x353/0x370 arch/x86/entry/common.c:300
 entry_SYSCALL_64_after_hwframe+0x44/0xa9

Reported by Kernel Concurrency Sanitizer on:
CPU: 0 PID: 22644 Comm: syz-executor.4 Not tainted 5.4.0-rc7+ #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
==================================================================

Crashes (5):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2019/11/16 19:30 https://github.com/google/ktsan.git kcsan 5863cc791e4c cdac920b .config console log report ci2-upstream-kcsan-gce
2019/11/04 16:52 https://github.com/google/ktsan.git kcsan 94c006602e13 18e12644 .config console log report ci2-upstream-kcsan-gce
2019/11/03 14:16 https://github.com/google/ktsan.git kcsan 05f2236801fe c9610487 .config console log report ci2-upstream-kcsan-gce
2019/10/26 19:53 https://github.com/google/ktsan.git kcsan 05f2236801fe 25bb509e .config console log report ci2-upstream-kcsan-gce
2019/10/24 14:07 https://github.com/google/ktsan.git kcsan 05f2236801fe d01bb02a .config console log report ci2-upstream-kcsan-gce
* Struck through repros no longer work on HEAD.