syzbot


KCSAN: data-race in virtqueue_disable_cb / virtqueue_get_buf_ctx

Status: auto-closed as invalid on 2020/04/14 10:20
Subsystems: virt
[Documentation on labels]
First crash: 1641d, last: 1543d
Similar bugs (1)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
upstream KCSAN: data-race in virtqueue_disable_cb / virtqueue_get_buf_ctx (2) virt 1 1020d 1020d 0/26 auto-closed as invalid on 2021/08/15 04:56

Sample crash report:
==================================================================
BUG: KCSAN: data-race in virtqueue_disable_cb / virtqueue_get_buf_ctx

read to 0xffff888129e7fa30 of 2 bytes by interrupt on cpu 0:
 virtqueue_get_buf_ctx_split drivers/virtio/virtio_ring.c:725 [inline]
 virtqueue_get_buf_ctx+0x4da/0x5c0 drivers/virtio/virtio_ring.c:1900
 virtqueue_get_buf+0x29/0x40 drivers/virtio/virtio_ring.c:1906
 free_old_xmit_skbs+0x9e/0x170 drivers/net/virtio_net.c:1359
 start_xmit+0xd3/0xbe0 drivers/net/virtio_net.c:1562
 __netdev_start_xmit include/linux/netdevice.h:4447 [inline]
 netdev_start_xmit include/linux/netdevice.h:4461 [inline]
 xmit_one net/core/dev.c:3420 [inline]
 dev_hard_start_xmit+0xef/0x430 net/core/dev.c:3436
 sch_direct_xmit+0x2b3/0x900 net/sched/sch_generic.c:313
 __dev_xmit_skb net/core/dev.c:3621 [inline]
 __dev_queue_xmit+0x13e2/0x1ba0 net/core/dev.c:3982
 dev_queue_xmit+0x21/0x30 net/core/dev.c:4046
 neigh_hh_output include/net/neighbour.h:500 [inline]
 neigh_output include/net/neighbour.h:509 [inline]
 ip_finish_output2+0x89b/0xea0 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:296 [inline]
 ip_output+0xfe/0x230 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+0xea3/0x1df0 net/ipv4/tcp_output.c:1170
 __tcp_send_ack+0x246/0x300 net/ipv4/tcp_output.c:3697
 tcp_send_ack+0x34/0x40 net/ipv4/tcp_output.c:3703
 __tcp_ack_snd_check+0xd9/0x580 net/ipv4/tcp_input.c:5243
 tcp_rcv_established+0xce9/0xf50 net/ipv4/tcp_input.c:5674
 tcp_v4_do_rcv+0x3b5/0x520 net/ipv4/tcp_ipv4.c:1562
 tcp_v4_rcv+0x1b2a/0x1d20 net/ipv4/tcp_ipv4.c:1943
 ip_protocol_deliver_rcu+0x4d/0x420 net/ipv4/ip_input.c:204
 ip_local_deliver_finish+0x110/0x140 net/ipv4/ip_input.c:231
 NF_HOOK include/linux/netfilter.h:307 [inline]
 NF_HOOK include/linux/netfilter.h:301 [inline]
 ip_local_deliver+0x133/0x210 net/ipv4/ip_input.c:252
 dst_input include/net/dst.h:442 [inline]
 ip_sublist_rcv_finish+0xf8/0x140 net/ipv4/ip_input.c:549
 ip_list_rcv_finish net/ipv4/ip_input.c:599 [inline]
 ip_sublist_rcv+0x418/0x550 net/ipv4/ip_input.c:607
 ip_list_rcv+0x2f5/0x322 net/ipv4/ip_input.c:642
 __netif_receive_skb_list_ptype net/core/dev.c:5193 [inline]
 __netif_receive_skb_list_ptype net/core/dev.c:5182 [inline]
 __netif_receive_skb_list_core+0x350/0x5c0 net/core/dev.c:5241
 __netif_receive_skb_list net/core/dev.c:5293 [inline]
 netif_receive_skb_list_internal+0x5d8/0x830 net/core/dev.c:5388
 gro_normal_list.part.0+0x3a/0xb0 net/core/dev.c:5810
 gro_normal_list net/core/dev.c:6216 [inline]
 napi_complete_done+0x1e4/0x3c0 net/core/dev.c:6203
 virtqueue_napi_complete+0x3a/0xa0 drivers/net/virtio_net.c:329
 virtnet_poll+0x7a6/0x7d0 drivers/net/virtio_net.c:1432
 napi_poll net/core/dev.c:6532 [inline]
 net_rx_action+0x3ae/0xa90 net/core/dev.c:6600
 __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]
 do_IRQ+0x81/0x130 arch/x86/kernel/irq.c:263
 ret_from_intr+0x0/0x21
 arch_local_irq_restore arch/x86/include/asm/paravirt.h:752 [inline]
 kcsan_setup_watchpoint+0x1d4/0x460 kernel/kcsan/core.c:429
 check_access kernel/kcsan/core.c:459 [inline]
 __tsan_read8+0xc6/0x100 kernel/kcsan/core.c:589
 tomoyo_compare_name_union+0x26/0xa0 security/tomoyo/file.c:85
 tomoyo_check_path_acl security/tomoyo/file.c:260 [inline]
 tomoyo_check_path_acl+0x85/0xa0 security/tomoyo/file.c:252
 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:3265 [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/0x3a0 arch/x86/entry/common.c:294
 entry_SYSCALL_64_after_hwframe+0x44/0xa9

write to 0xffff888129e7fa30 of 2 bytes by interrupt on cpu 1:
 virtqueue_disable_cb_split drivers/virtio/virtio_ring.c:741 [inline]
 virtqueue_disable_cb+0xe9/0x130 drivers/virtio/virtio_ring.c:1925
 skb_xmit_done+0x6a/0x110 drivers/net/virtio_net.c:343
 vring_interrupt drivers/virtio/virtio_ring.c:2046 [inline]
 vring_interrupt+0x1a1/0x1c0 drivers/virtio/virtio_ring.c:2032
 __handle_irq_event_percpu+0x9a/0x430 kernel/irq/handle.c:149
 handle_irq_event_percpu+0x4b/0xe0 kernel/irq/handle.c:189
 handle_irq_event+0x85/0xca kernel/irq/handle.c:206
 handle_edge_irq+0x1a4/0x4a0 kernel/irq/chip.c:830
 generic_handle_irq_desc include/linux/irqdesc.h:156 [inline]
 do_IRQ+0x7c/0x130 arch/x86/kernel/irq.c:250
 ret_from_intr+0x0/0x21
 is_atomic kernel/kcsan/core.c:174 [inline]
 should_watch kernel/kcsan/core.c:203 [inline]
 check_access kernel/kcsan/core.c:458 [inline]
 __tsan_unaligned_write2+0x88/0x110 kernel/kcsan/core.c:587
 zap_pte_range mm/memory.c:1066 [inline]
 zap_pmd_range mm/memory.c:1184 [inline]
 zap_pud_range mm/memory.c:1213 [inline]
 zap_p4d_range mm/memory.c:1234 [inline]
 unmap_page_range+0x8f5/0x1940 mm/memory.c:1255
 unmap_single_vma+0x144/0x200 mm/memory.c:1300
 unmap_vmas+0xda/0x1a0 mm/memory.c:1332
 exit_mmap+0x13e/0x300 mm/mmap.c:3140
 __mmput kernel/fork.c:1082 [inline]
 mmput+0xea/0x280 kernel/fork.c:1103
 exit_mm kernel/exit.c:485 [inline]
 do_exit+0x4ac/0x18c0 kernel/exit.c:784
 do_group_exit+0xb4/0x1c0 kernel/exit.c:895
 __do_sys_exit_group kernel/exit.c:906 [inline]
 __se_sys_exit_group kernel/exit.c:904 [inline]
 __x64_sys_exit_group+0x2e/0x30 kernel/exit.c:904
 do_syscall_64+0xcc/0x3a0 arch/x86/entry/common.c:294
 entry_SYSCALL_64_after_hwframe+0x44/0xa9

Reported by Kernel Concurrency Sanitizer on:
CPU: 1 PID: 12394 Comm: syz-executor.3 Not tainted 5.5.0-rc1-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
==================================================================

Crashes (31):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2020/02/04 10:13 https://github.com/google/ktsan.git kcsan 245a43005292 93e5e335 .config console log report ci2-upstream-kcsan-gce
2020/02/01 11:32 https://github.com/google/ktsan.git kcsan 245a43005292 326d4c78 .config console log report ci2-upstream-kcsan-gce
2020/01/28 03:49 https://github.com/google/ktsan.git kcsan 245a43005292 56cd6c9b .config console log report ci2-upstream-kcsan-gce
2020/01/26 20:34 https://github.com/google/ktsan.git kcsan 245a43005292 dd56146d .config console log report ci2-upstream-kcsan-gce
2020/01/25 04:32 https://github.com/google/ktsan.git kcsan 245a43005292 2e95ab33 .config console log report ci2-upstream-kcsan-gce
2020/01/09 16:26 https://github.com/google/ktsan.git kcsan 245a43005292 4de4e9f0 .config console log report ci2-upstream-kcsan-gce
2020/01/08 00:33 https://github.com/google/ktsan.git kcsan 245a43005292 6738e0b3 .config console log report ci2-upstream-kcsan-gce
2020/01/04 04:33 https://github.com/google/ktsan.git kcsan 245a43005292 68256974 .config console log report ci2-upstream-kcsan-gce
2020/01/02 17:05 https://github.com/google/ktsan.git kcsan 245a43005292 25a0186e .config console log report ci2-upstream-kcsan-gce
2019/12/31 11:22 https://github.com/google/ktsan.git kcsan 245a43005292 7f117e28 .config console log report ci2-upstream-kcsan-gce
2019/12/23 14:19 https://github.com/google/ktsan.git kcsan 245a43005292 be5c2c81 .config console log report ci2-upstream-kcsan-gce
2019/12/22 16:14 https://github.com/google/ktsan.git kcsan 245a43005292 8b967267 .config console log report ci2-upstream-kcsan-gce
2019/12/21 09:49 https://github.com/google/ktsan.git kcsan 245a43005292 bc586918 .config console log report ci2-upstream-kcsan-gce
2019/12/18 22:59 https://github.com/google/ktsan.git kcsan 245a43005292 79b211f7 .config console log report ci2-upstream-kcsan-gce
2019/12/18 13:57 https://github.com/google/ktsan.git kcsan 245a43005292 64ca0a37 .config console log report ci2-upstream-kcsan-gce
2019/12/17 01:58 https://github.com/google/ktsan.git kcsan 245a43005292 d13d7958 .config console log report ci2-upstream-kcsan-gce
2019/12/12 16:02 https://github.com/google/ktsan.git kcsan ef798c30ba4e d973f528 .config console log report ci2-upstream-kcsan-gce
2019/12/11 18:21 https://github.com/google/ktsan.git kcsan ef798c30ba4e 0d368675 .config console log report ci2-upstream-kcsan-gce
2019/12/11 08:27 https://github.com/google/ktsan.git kcsan ef798c30ba4e 101194eb .config console log report ci2-upstream-kcsan-gce
2019/12/10 07:53 https://github.com/google/ktsan.git kcsan ef798c30ba4e 4b83c8fb .config console log report ci2-upstream-kcsan-gce
2019/12/02 01:41 https://github.com/google/ktsan.git kcsan ef798c30ba4e f879db37 .config console log report ci2-upstream-kcsan-gce
2019/12/01 10:09 https://github.com/google/ktsan.git kcsan ef798c30ba4e a76bf83f .config console log report ci2-upstream-kcsan-gce
2019/11/30 02:50 https://github.com/google/ktsan.git kcsan ef798c30ba4e 3a75be00 .config console log report ci2-upstream-kcsan-gce
2019/11/27 08:34 https://github.com/google/ktsan.git kcsan ef798c30ba4e 1048481f .config console log report ci2-upstream-kcsan-gce
2019/11/22 14:12 https://github.com/google/ktsan.git kcsan 5863cc791e4c 598ca6c8 .config console log report ci2-upstream-kcsan-gce
2019/11/16 16:36 https://github.com/google/ktsan.git kcsan 5863cc791e4c cdac920b .config console log report ci2-upstream-kcsan-gce
2019/11/12 11:13 https://github.com/google/ktsan.git kcsan 7f2955e0d056 048f2d49 .config console log report ci2-upstream-kcsan-gce
2019/11/08 15:31 https://github.com/google/ktsan.git kcsan 94c006602e13 1e35461e .config console log report ci2-upstream-kcsan-gce
2019/11/03 10:39 https://github.com/google/ktsan.git kcsan 05f2236801fe c9610487 .config console log report ci2-upstream-kcsan-gce
2019/10/29 06:34 https://github.com/google/ktsan.git kcsan 05f2236801fe 5ea87a66 .config console log report ci2-upstream-kcsan-gce
2019/10/28 17:41 https://github.com/google/ktsan.git kcsan 05f2236801fe 439d7b14 .config console log report ci2-upstream-kcsan-gce
* Struck through repros no longer work on HEAD.