KVM: make processes waiting on vcpu mutex killable
authorMichael S. Tsirkin <mst@redhat.com>
Sun, 16 Sep 2012 08:50:30 +0000 (11:50 +0300)
committerMarcelo Tosatti <mtosatti@redhat.com>
Mon, 17 Sep 2012 16:46:32 +0000 (13:46 -0300)
commit9fc77441e5e1bf80b794cc546d2243ee9f4afb75
tree4661976f4fea7606a54b3f5276c0ecb45760979c
parent7454766f7bead388251aedee35a478356a7f4e72
KVM: make processes waiting on vcpu mutex killable

vcpu mutex can be held for unlimited time so
taking it with mutex_lock on an ioctl is wrong:
one process could be passed a vcpu fd and
call this ioctl on the vcpu used by another process,
it will then be unkillable until the owner exits.

Call mutex_lock_killable instead and return status.
Note: mutex_lock_interruptible would be even nicer,
but I am not sure all users are prepared to handle EINTR
from these ioctls. They might misinterpret it as an error.

Cleanup paths expect a vcpu that can't be used by
any userspace so this will always succeed - catch bugs
by calling BUG_ON.

Catch callers that don't check return state by adding
__must_check.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
arch/x86/kvm/x86.c
include/linux/kvm_host.h
virt/kvm/kvm_main.c