kvm: emulating exchange as write ================================================================== BUG: KCSAN: data-race in kvm_arch_vcpu_load / pvclock_gtod_notify write to 0xffffffff85fde628 of 4 bytes by interrupt on cpu 0: update_pvclock_gtod arch/x86/kvm/x86.c:1551 [inline] pvclock_gtod_notify+0x9f/0x260 arch/x86/kvm/x86.c:7123 notifier_call_chain+0xd7/0x160 kernel/notifier.c:95 __raw_notifier_call_chain kernel/notifier.c:396 [inline] raw_notifier_call_chain+0x37/0x50 kernel/notifier.c:403 update_pvclock_gtod kernel/time/timekeeping.c:578 [inline] timekeeping_update+0x1b5/0x2d0 kernel/time/timekeeping.c:672 timekeeping_advance+0x87d/0xd80 kernel/time/timekeeping.c:2120 update_wall_time+0x19/0x20 kernel/time/timekeeping.c:2137 tick_do_update_jiffies64+0x1a4/0x250 kernel/time/tick-sched.c:94 tick_sched_do_timer+0xd4/0xe0 kernel/time/tick-sched.c:138 tick_sched_timer+0x43/0xe0 kernel/time/tick-sched.c:1292 __run_hrtimer kernel/time/hrtimer.c:1514 [inline] __hrtimer_run_queues+0x274/0x5f0 kernel/time/hrtimer.c:1576 hrtimer_interrupt+0x22a/0x480 kernel/time/hrtimer.c:1638 local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1110 [inline] smp_apic_timer_interrupt+0xdc/0x280 arch/x86/kernel/apic/apic.c:1135 apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:830 rep_nop arch/x86/include/asm/processor.h:650 [inline] delay_tsc+0x33/0xc0 arch/x86/lib/delay.c:67 __delay arch/x86/lib/delay.c:161 [inline] __const_udelay+0x36/0x40 arch/x86/lib/delay.c:175 try_check_zero+0x18d/0x1d0 kernel/rcu/srcutree.c:705 srcu_advance_state kernel/rcu/srcutree.c:1142 [inline] process_srcu+0x19a/0x780 kernel/rcu/srcutree.c:1237 process_one_work+0x3d4/0x890 kernel/workqueue.c:2269 worker_thread+0xa0/0x800 kernel/workqueue.c:2415 kthread+0x1d4/0x200 drivers/block/aoe/aoecmd.c:1253 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:352 read to 0xffffffff85fde628 of 4 bytes by task 21076 on cpu 1: kvm_check_tsc_unstable arch/x86/kvm/x86.c:1837 [inline] kvm_arch_vcpu_load+0x1e5/0x620 arch/x86/kvm/x86.c:3418 kvm_sched_in+0x8e/0xc0 arch/x86/kvm/../../../virt/kvm/kvm_main.c:4234 __fire_sched_in_preempt_notifiers kernel/sched/core.c:3029 [inline] fire_sched_in_preempt_notifiers kernel/sched/core.c:3035 [inline] finish_task_switch+0xee/0x260 kernel/sched/core.c:3227 context_switch kernel/sched/core.c:3387 [inline] __schedule+0x319/0x640 kernel/sched/core.c:4069 preempt_schedule_common+0x37/0x90 kernel/sched/core.c:4217 preempt_schedule+0x30/0x40 kernel/sched/core.c:4242 ___preempt_schedule+0x16/0x20 arch/x86/entry/thunk_64.S:50 vprintk_emit+0x4ad/0x4e0 kernel/printk/printk.c:1997 vprintk_default+0x31/0x50 kernel/printk/printk.c:2023 vprintk_func+0x85/0x140 kernel/printk/printk_safe.c:386 printk+0x69/0x91 kernel/printk/printk.c:2056 emulator_cmpxchg_emulated.cold+0x24/0x29 arch/x86/kvm/x86.c:5784 __load_segment_descriptor+0x984/0xc60 arch/x86/kvm/emulate.c:1734 load_segment_descriptor+0x8f/0x110 arch/x86/kvm/emulate.c:1801 em_ltr+0x56/0x70 arch/x86/kvm/emulate.c:3776 x86_emulate_insn+0x3e3/0x28e0 arch/x86/kvm/emulate.c:5653 x86_emulate_instruction+0x498/0x1110 arch/x86/kvm/x86.c:6690 kvm_mmu_page_fault+0x233/0xbc0 arch/x86/kvm/mmu.c:5489 handle_ept_violation+0x1e5/0x340 arch/x86/kvm/vmx/vmx.c:5185 vmx_handle_exit+0x1c2/0xd60 arch/x86/kvm/vmx/vmx.c:5929 vcpu_enter_guest+0xc1f/0x3830 arch/x86/kvm/x86.c:8227 vcpu_run arch/x86/kvm/x86.c:8291 [inline] kvm_arch_vcpu_ioctl_run+0x2a2/0xdc0 arch/x86/kvm/x86.c:8498 kvm_vcpu_ioctl+0x752/0xa30 arch/x86/kvm/../../../virt/kvm/kvm_main.c:2772 vfs_ioctl fs/ioctl.c:46 [inline] file_ioctl fs/ioctl.c:509 [inline] do_vfs_ioctl+0x991/0xc60 fs/ioctl.c:696 ksys_ioctl+0xbd/0xe0 fs/ioctl.c:713 __do_sys_ioctl fs/ioctl.c:720 [inline] __se_sys_ioctl fs/ioctl.c:718 [inline] __x64_sys_ioctl+0x4c/0x60 fs/ioctl.c:718 do_syscall_64+0xcc/0x370 arch/x86/entry/common.c:290 entry_SYSCALL_64_after_hwframe+0x44/0xa9 Reported by Kernel Concurrency Sanitizer on: CPU: 1 PID: 21076 Comm: syz-executor.5 Not tainted 5.4.0-rc6+ #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 ==================================================================