]> www.infradead.org Git - users/jedix/linux-maple.git/commit
KVM: Assert that a destroyed/freed vCPU is no longer visible
authorSean Christopherson <seanjc@google.com>
Mon, 24 Feb 2025 23:55:38 +0000 (15:55 -0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 26 Feb 2025 18:17:23 +0000 (13:17 -0500)
commited8f966331d618a9577eb79068706217a472be78
tree1888ff956627eae535b3df9ba03e7ebdf0c4403e
parented09b50b5411a6dcbf350ac7ea6270d786baa282
KVM: Assert that a destroyed/freed vCPU is no longer visible

After freeing a vCPU, assert that it is no longer reachable, and that
kvm_get_vcpu() doesn't return garbage or a pointer to some other vCPU.
While KVM obviously shouldn't be attempting to access a freed vCPU, it's
all too easy for KVM to make a VM-wide request, e.g. via KVM_BUG_ON() or
kvm_flush_remote_tlbs().

Alternatively, KVM could short-circuit problematic paths if the VM's
refcount has gone to zero, e.g. in kvm_make_all_cpus_request(), or KVM
could try disallow making global requests during teardown.  But given that
deleting the vCPU from the array Just Works, adding logic to the requests
path is unnecessary, and trying to make requests illegal during teardown
would be a fool's errand.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-ID: <20250224235542.2562848-4-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
virt/kvm/kvm_main.c