diff options
author | Eduardo Habkost <ehabkost@redhat.com> | 2014-05-30 17:26:22 -0300 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2014-05-30 22:28:55 +0200 |
commit | 0e1dac6c41f337f997814344a847162968c20c64 (patch) | |
tree | 6652b6ea438df475a50bdc2d58e0cc1711cfbae5 | |
parent | 28fb26f19ffa675ac8cc08a355e5b01cc194aa5e (diff) |
kvm: Ensure negative return value on kvm_init() error handling path
We need to ensure ret < 0 when going through the error path, or QEMU may
try to run the half-initialized VM and crash.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r-- | kvm-all.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -1374,7 +1374,7 @@ int kvm_init(MachineClass *mc) ret = kvm_ioctl(s, KVM_GET_API_VERSION, 0); if (ret < KVM_API_VERSION) { - if (ret > 0) { + if (ret >= 0) { ret = -EINVAL; } fprintf(stderr, "kvm version too old\n"); @@ -1425,6 +1425,7 @@ int kvm_init(MachineClass *mc) if (mc->kvm_type) { type = mc->kvm_type(kvm_type); } else if (kvm_type) { + ret = -EINVAL; fprintf(stderr, "Invalid argument kvm-type=%s\n", kvm_type); goto err; } @@ -1525,6 +1526,7 @@ int kvm_init(MachineClass *mc) return 0; err: + assert(ret < 0); if (s->vmfd >= 0) { close(s->vmfd); } |