KVM: x86: fix return value of kvm_vm_ioctl_set_tss_addr()
authorGuo Chao <yan@linux.vnet.ibm.com>
Fri, 2 Nov 2012 10:33:22 +0000 (18:33 +0800)
committerMarcelo Tosatti <mtosatti@redhat.com>
Wed, 14 Nov 2012 00:14:29 +0000 (22:14 -0200)
Return value of this function will be that of ioctl().

#include <stdio.h>
#include <linux/kvm.h>

int main () {
int fd;
fd = open ("/dev/kvm", 0);
fd = ioctl (fd, KVM_CREATE_VM, 0);
ioctl (fd, KVM_SET_TSS_ADDR, 0xfffff000);
perror ("");
return 0;
}

Output is "Operation not permitted". That's not what
we want.

Return -EINVAL in this case.

Signed-off-by: Guo Chao <yan@linux.vnet.ibm.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
arch/x86/kvm/x86.c

index 40905ce6be0a382b3c2245c74ae1a98cc0438afa..a25b3df8e3e159ce782ec3d36cdc68edaecd8971 100644 (file)
@@ -2946,7 +2946,7 @@ static int kvm_vm_ioctl_set_tss_addr(struct kvm *kvm, unsigned long addr)
        int ret;
 
        if (addr > (unsigned int)(-3 * PAGE_SIZE))
-               return -1;
+               return -EINVAL;
        ret = kvm_x86_ops->set_tss_addr(kvm, addr);
        return ret;
 }