Commit adad0d02 authored by Colin Ian King's avatar Colin Ian King Committed by Paolo Bonzini

kvm: svm: fix unsigned compare less than zero comparison

vm_data->avic_vm_id is a u32, so the check for a error
return (less than zero) such as -EAGAIN from
avic_get_next_vm_id currently has no effect whatsoever.
Fix this by using a temporary int for the comparison
and assign vm_data->avic_vm_id to this. I used an explicit
u32 cast in the assignment to show why vm_data->avic_vm_id
cannot be used in the assign/compare steps.
Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
Acked-by: default avatarJoerg Roedel <jroedel@suse.de>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 095cf55d
...@@ -1412,7 +1412,7 @@ static void avic_vm_destroy(struct kvm *kvm) ...@@ -1412,7 +1412,7 @@ static void avic_vm_destroy(struct kvm *kvm)
static int avic_vm_init(struct kvm *kvm) static int avic_vm_init(struct kvm *kvm)
{ {
unsigned long flags; unsigned long flags;
int err = -ENOMEM; int vm_id, err = -ENOMEM;
struct kvm_arch *vm_data = &kvm->arch; struct kvm_arch *vm_data = &kvm->arch;
struct page *p_page; struct page *p_page;
struct page *l_page; struct page *l_page;
...@@ -1420,9 +1420,10 @@ static int avic_vm_init(struct kvm *kvm) ...@@ -1420,9 +1420,10 @@ static int avic_vm_init(struct kvm *kvm)
if (!avic) if (!avic)
return 0; return 0;
vm_data->avic_vm_id = avic_get_next_vm_id(); vm_id = avic_get_next_vm_id();
if (vm_data->avic_vm_id < 0) if (vm_id < 0)
return vm_data->avic_vm_id; return vm_id;
vm_data->avic_vm_id = (u32)vm_id;
/* Allocating physical APIC ID table (4KB) */ /* Allocating physical APIC ID table (4KB) */
p_page = alloc_page(GFP_KERNEL); p_page = alloc_page(GFP_KERNEL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment