On Mon, Mar 06, 2023 at 02:41:12PM -0800, Vipin Sharma wrote: > > static void mmu_free_memory_caches(struct kvm_vcpu *vcpu) > { > kvm_mmu_free_memory_cache(&vcpu->arch.mmu_pte_list_desc_cache); > - kvm_mmu_free_memory_cache(&vcpu->arch.mmu_shadow_page_cache); > + mutex_lock(&vcpu->arch.mmu_shadow_page_cache_lock); > + mmu_free_sp_memory_cache(&vcpu->arch.mmu_shadow_page_cache); > + mutex_unlock(&vcpu->arch.mmu_shadow_page_cache_lock); Is this lock necessary (even when the shrinker is hooked up)? mmu_free_memory_caches() is only called when KVM fails to create a vCPU (before it has been added to vcpu_array) or during VM destruction (after the VM has been removed from vm_list).