On Wed, Jan 08, 2020 at 06:46:30PM +0100, Paolo Bonzini wrote: > On 23/12/19 21:10, Peter Xu wrote: > >> Yes, kvm->slots_lock is taken by x86_set_memory_region. We need to move > >> that to the callers, of which several are already taking the lock (all > >> except vmx_set_tss_addr and kvm_arch_destroy_vm). > > OK, will do. I'll directly replace the x86_set_memory_region() calls > > in kvm_arch_destroy_vm() to be __x86_set_memory_region() since IIUC > > the slots_lock is helpless when destroying the vm... then drop the > > x86_set_memory_region() helper in the next version. Thanks, > > Be careful because it may cause issues with lockdep. Better just take > the lock. But you seemed to have fixed that already? :) 3898da947bba ("KVM: avoid using rcu_dereference_protected", 2017-08-02) And this path is after kvm_destroy_vm() so kvm->users_count should be 0. Or I feel like we need to have more places to take the lock.. -- Peter Xu