KVM: nVMX: Fix bad cleanup on error of get/set nested state IOCTLs
authorLiran Alon <liran.alon@oracle.com>
Sun, 16 Sep 2018 11:28:20 +0000 (14:28 +0300)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 20 Sep 2018 16:54:08 +0000 (18:54 +0200)
commit26b471c7e2f7befd0f59c35b257749ca57e0ed70
tree955a3c744216141bc2beb4e4e93655e3dec37598
parent8b56ee91ffc88ea01400c012e10fe22a9d233265
KVM: nVMX: Fix bad cleanup on error of get/set nested state IOCTLs

The handlers of IOCTLs in kvm_arch_vcpu_ioctl() are expected to set
their return value in "r" local var and break out of switch block
when they encounter some error.
This is because vcpu_load() is called before the switch block which
have a proper cleanup of vcpu_put() afterwards.

However, KVM_{GET,SET}_NESTED_STATE IOCTLs handlers just return
immediately on error without performing above mentioned cleanup.

Thus, change these handlers to behave as expected.

Fixes: 8fcc4b5923af ("kvm: nVMX: Introduce KVM_CAP_NESTED_STATE")

Reviewed-by: Mark Kanda <mark.kanda@oracle.com>
Reviewed-by: Patrick Colp <patrick.colp@oracle.com>
Signed-off-by: Liran Alon <liran.alon@oracle.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/x86.c