================================================================== BUG: KCSAN: data-race in random_recv_done / virtio_read write to 0xffff8881003910ec of 4 bytes by interrupt on cpu 1: random_recv_done+0x5e/0x80 drivers/char/hw_random/virtio-rng.c:45 vring_interrupt+0x14c/0x170 drivers/virtio/virtio_ring.c:2470 __handle_irq_event_percpu+0x92/0x400 kernel/irq/handle.c:158 handle_irq_event_percpu kernel/irq/handle.c:193 [inline] handle_irq_event+0x60/0xf0 kernel/irq/handle.c:210 handle_edge_irq+0x17e/0x5a0 kernel/irq/chip.c:819 generic_handle_irq_desc include/linux/irqdesc.h:158 [inline] handle_irq arch/x86/kernel/irq.c:231 [inline] __common_interrupt+0x60/0x100 arch/x86/kernel/irq.c:250 common_interrupt+0x9a/0xc0 arch/x86/kernel/irq.c:240 asm_common_interrupt+0x22/0x40 arch/x86/include/asm/idtentry.h:640 __raw_spin_unlock_irqrestore include/linux/spinlock_api_smp.h:152 [inline] _raw_spin_unlock_irqrestore+0x37/0x60 kernel/locking/spinlock.c:194 spin_unlock_irqrestore include/linux/spinlock.h:405 [inline] unlock_page_lruvec_irqrestore include/linux/memcontrol.h:1606 [inline] folio_batch_move_lru+0x238/0x2a0 mm/swap.c:252 folio_batch_add_and_move mm/swap.c:263 [inline] folio_add_lru+0xf1/0x140 mm/swap.c:534 folio_add_lru_vma+0x44/0x60 mm/swap.c:554 lru_cache_add_inactive_or_unevictable+0x45/0xf0 mm/folio-compat.c:94 wp_page_copy+0x7d2/0x1460 mm/memory.c:3186 do_wp_page+0x2dd/0x780 handle_pte_fault mm/memory.c:4972 [inline] __handle_mm_fault mm/memory.c:5096 [inline] handle_mm_fault+0x5ef/0xa80 mm/memory.c:5217 do_user_addr_fault+0x4a1/0x980 arch/x86/mm/fault.c:1428 handle_page_fault arch/x86/mm/fault.c:1519 [inline] exc_page_fault+0x60/0x160 arch/x86/mm/fault.c:1575 asm_exc_page_fault+0x22/0x30 arch/x86/include/asm/idtentry.h:570 copy_user_enhanced_fast_string+0xa/0x40 arch/x86/lib/copy_user_64.S:165 copy_user_generic arch/x86/include/asm/uaccess_64.h:37 [inline] raw_copy_to_user arch/x86/include/asm/uaccess_64.h:58 [inline] copyout+0x72/0x90 lib/iov_iter.c:170 _copy_to_iter+0x288/0x910 lib/iov_iter.c:529 copy_to_iter include/linux/uio.h:179 [inline] simple_copy_to_iter+0x4c/0x60 net/core/datagram.c:513 __skb_datagram_iter+0x22d/0x510 net/core/datagram.c:442 skb_copy_datagram_iter+0x36/0xf0 net/core/datagram.c:527 skb_copy_datagram_msg include/linux/skbuff.h:3905 [inline] tcp_recvmsg_locked+0x61e/0x1580 net/ipv4/tcp.c:2601 tcp_recvmsg+0x148/0x4c0 net/ipv4/tcp.c:2679 inet_recvmsg+0x9e/0x210 net/ipv4/af_inet.c:861 sock_recvmsg_nosec net/socket.c:995 [inline] sock_recvmsg net/socket.c:1013 [inline] __sys_recvfrom+0x1db/0x2a0 net/socket.c:2169 __do_sys_recvfrom net/socket.c:2187 [inline] __se_sys_recvfrom net/socket.c:2183 [inline] __x64_sys_recvfrom+0x74/0x90 net/socket.c:2183 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x2b/0x70 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd write to 0xffff8881003910ec of 4 bytes by task 22659 on cpu 0: request_entropy drivers/char/hw_random/virtio-rng.c:56 [inline] copy_data drivers/char/hw_random/virtio-rng.c:74 [inline] virtio_read+0x190/0x440 drivers/char/hw_random/virtio-rng.c:92 rng_get_data drivers/char/hw_random/core.c:200 [inline] rng_dev_read+0x1b4/0x630 drivers/char/hw_random/core.c:237 vfs_read+0x198/0x560 fs/read_write.c:468 ksys_read+0xe8/0x1a0 fs/read_write.c:613 __do_sys_read fs/read_write.c:623 [inline] __se_sys_read fs/read_write.c:621 [inline] __x64_sys_read+0x3e/0x50 fs/read_write.c:621 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x2b/0x70 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd value changed: 0x00000040 -> 0x00000000 Reported by Kernel Concurrency Sanitizer on: CPU: 0 PID: 22659 Comm: syz-executor.2 Not tainted 6.1.0-syzkaller-02754-g9b93f5069fd9-dirty #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/26/2022 ==================================================================