From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Bonzini Subject: Re: [PATCH] kvm: Ensure negative return value on kvm_init() error handling path Date: Fri, 30 May 2014 22:29:47 +0200 Message-ID: <5388EA3B.50800@redhat.com> References: <1401481582-26007-1-git-send-email-ehabkost@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org To: Eduardo Habkost , qemu-devel@nongnu.org Return-path: Received: from mx1.redhat.com ([209.132.183.28]:40111 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932699AbaE3U3w (ORCPT ); Fri, 30 May 2014 16:29:52 -0400 In-Reply-To: <1401481582-26007-1-git-send-email-ehabkost@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: Il 30/05/2014 22:26, Eduardo Habkost ha scritto: > 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 > --- > kvm-all.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/kvm-all.c b/kvm-all.c > index 721a390..4e19eff 100644 > --- a/kvm-all.c > +++ b/kvm-all.c > @@ -1410,7 +1410,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"); > @@ -1461,6 +1461,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; > } > @@ -1561,6 +1562,7 @@ int kvm_init(MachineClass *mc) > return 0; > > err: > + assert(ret < 0); > if (s->vmfd >= 0) { > close(s->vmfd); > } > Applied, thanks. Paolo