Patchwork kvm_init didn't set return value after create vm failed

login
register
mail settings
Submitter Xu He Jie
Date Oct. 26, 2011, 10:19 a.m.
Message ID <1319624387-15707-1-git-send-email-xuhj@linux.vnet.ibm.com>
Download mbox | patch
Permalink /patch/121872/
State New
Headers show

Comments

Xu He Jie - Oct. 26, 2011, 10:19 a.m.
kvm_init didn't set return value after create vm failed.

And kvm_ioctl(s, KVM_CREATE_VM, 0)'s return value can be < -1, 
so change the check of vmfd at label 'err'.

Signed-off-by: Xu He Jie <xuhj@linux.vnet.ibm.com>
---
 kvm-all.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
Jan Kiszka - Oct. 26, 2011, 11:03 a.m.
On 2011-10-26 12:19, Xu He Jie wrote:
> kvm_init didn't set return value after create vm failed.
> 
> And kvm_ioctl(s, KVM_CREATE_VM, 0)'s return value can be < -1, 
> so change the check of vmfd at label 'err'.
> 
> Signed-off-by: Xu He Jie <xuhj@linux.vnet.ibm.com>
> ---
>  kvm-all.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
> 
> diff --git a/kvm-all.c b/kvm-all.c
> index e7faf5c..70edb39 100644
> --- a/kvm-all.c
> +++ b/kvm-all.c
> @@ -739,6 +739,7 @@ int kvm_init(void)
>          fprintf(stderr, "Please add the 'switch_amode' kernel parameter to "
>                          "your host kernel command line\n");
>  #endif
> +        ret = -errno;

kvm_ioctl returns -errno while that fprintf may overwrite it. Just set
ret to s->vmfd.

>          goto err;
>      }
>  
> @@ -797,7 +798,7 @@ int kvm_init(void)
>  
>  err:
>      if (s) {
> -        if (s->vmfd != -1) {
> +        if (s->vmfd >= 0) {
>              close(s->vmfd);
>          }
>          if (s->fd != -1) {

That looks correct.

The patch will probably flow via uq/master, so you should address Avi
and Marcelo with v2.

Thanks,
Jan
Xu He Jie - Oct. 26, 2011, 11:09 a.m.
于 2011年10月26日 19:03, Jan Kiszka 写道:
> On 2011-10-26 12:19, Xu He Jie wrote:
>> kvm_init didn't set return value after create vm failed.
>>
>> And kvm_ioctl(s, KVM_CREATE_VM, 0)'s return value can be<  -1,
>> so change the check of vmfd at label 'err'.
>>
>> Signed-off-by: Xu He Jie<xuhj@linux.vnet.ibm.com>
>> ---
>>   kvm-all.c |    3 ++-
>>   1 files changed, 2 insertions(+), 1 deletions(-)
>>
>> diff --git a/kvm-all.c b/kvm-all.c
>> index e7faf5c..70edb39 100644
>> --- a/kvm-all.c
>> +++ b/kvm-all.c
>> @@ -739,6 +739,7 @@ int kvm_init(void)
>>           fprintf(stderr, "Please add the 'switch_amode' kernel parameter to "
>>                           "your host kernel command line\n");
>>   #endif
>> +        ret = -errno;
> kvm_ioctl returns -errno while that fprintf may overwrite it. Just set
> ret to s->vmfd.
ok.
>
>>           goto err;
>>       }
>>
>> @@ -797,7 +798,7 @@ int kvm_init(void)
>>
>>   err:
>>       if (s) {
>> -        if (s->vmfd != -1) {
>> +        if (s->vmfd>= 0) {
>>               close(s->vmfd);
>>           }
>>           if (s->fd != -1) {
> That looks correct.
>
> The patch will probably flow via uq/master, so you should address Avi
> and Marcelo with v2.
>
> Thanks,
> Jan
>
Thanks,
Xu

Patch

diff --git a/kvm-all.c b/kvm-all.c
index e7faf5c..70edb39 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -739,6 +739,7 @@  int kvm_init(void)
         fprintf(stderr, "Please add the 'switch_amode' kernel parameter to "
                         "your host kernel command line\n");
 #endif
+        ret = -errno;
         goto err;
     }
 
@@ -797,7 +798,7 @@  int kvm_init(void)
 
 err:
     if (s) {
-        if (s->vmfd != -1) {
+        if (s->vmfd >= 0) {
             close(s->vmfd);
         }
         if (s->fd != -1) {