• Wanpeng Li's avatar
    KVM: X86: hyper-v: Task srcu lock when accessing kvm_memslots() · da6d63a0
    Wanpeng Li authored
       WARNING: suspicious RCU usage
       5.13.0-rc1 #4 Not tainted
       -----------------------------
       ./include/linux/kvm_host.h:710 suspicious rcu_dereference_check() usage!
    
      other info that might help us debug this:
    
      rcu_scheduler_active = 2, debug_locks = 1
       1 lock held by hyperv_clock/8318:
        #0: ffffb6b8cb05a7d8 (&hv->hv_lock){+.+.}-{3:3}, at: kvm_hv_invalidate_tsc_page+0x3e/0xa0 [kvm]
    
      stack backtrace:
      CPU: 3 PID: 8318 Comm: hyperv_clock Not tainted 5.13.0-rc1 #4
      Call Trace:
       dump_stack+0x87/0xb7
       lockdep_rcu_suspicious+0xce/0xf0
       kvm_write_guest_page+0x1c1/0x1d0 [kvm]
       kvm_write_guest+0x50/0x90 [kvm]
       kvm_hv_invalidate_tsc_page+0x79/0xa0 [kvm]
       kvm_gen_update_masterclock+0x1d/0x110 [kvm]
       kvm_arch_vm_ioctl+0x2a7/0xc50 [kvm]
       kvm_vm_ioctl+0x123/0x11d0 [kvm]
       __x64_sys_ioctl+0x3ed/0x9d0
       do_syscall_64+0x3d/0x80
       entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    kvm_memslots() will be called by kvm_write_guest(), so we should take the srcu lock.
    
    Fixes: e880c6ea
    
     (KVM: x86: hyper-v: Prevent using not-yet-updated TSC page by secondary CPUs)
    Reviewed-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: default avatarWanpeng Li <wanpengli@tencent.com>
    Message-Id: <1621339235-11131-4-git-send-email-wanpengli@tencent.com>
    Reviewed-by: default avatarSean Christopherson <seanjc@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    da6d63a0