On Tue, Jul 29, 2025 at 12:33:38PM -0700, Sean Christopherson wrote: >Relax the protection against interacting with a buggy KVM to only reject >ioctls if the VM is bugged, i.e. allow userspace to invoke ioctls if KVM >deliberately terminated the VM. Drop kvm.vm_dead as there are no longer >any readers, and KVM shouldn't rely on vm_dead for functional correctness. >The only functional guarantees provided by kvm_vm_dead() come by way of >KVM_REQ_VM_DEAD, which ensures that vCPU won't re-enter the guest. If ioctls are allowed for dead VMs, would it be possible for userspace to create a new vCPU and attempt to enter a dead VM? is this something KVM should prevent? > >Practically speaking, this only affects x86, which uses kvm_vm_dead() to >prevent running a VM whose resources have been partially freed or has run >one or more of its vCPUs into an architecturally defined state. In these ^^^ undefined? >cases, there is no (known) danger to KVM, the goal is purely to prevent >entering the guest. > >As evidenced by commit ecf371f8b02d ("KVM: SVM: Reject SEV{-ES} intra host >migration if vCPU creation is in-flight"), the restriction on invoking >ioctls only blocks _new_ ioctls. I.e. KVM mustn't rely on blocking ioctls >for functional safety (whereas KVM_REQ_VM_DEAD is guaranteed to prevent >vCPUs from entering the guest).