[PATCH] accel/kvm: ensure ret always set

Alex Bennée posted 1 patch 4 years, 6 months ago
Test checkpatch passed
Test docker-mingw@fedora passed
Test docker-quick@centos7 passed
Test docker-clang@ubuntu failed
Test asan passed
Test FreeBSD passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20191002102212.6100-1-alex.bennee@linaro.org
accel/kvm/kvm-all.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
[PATCH] accel/kvm: ensure ret always set
Posted by Alex Bennée 4 years, 6 months ago
Some of the cross compilers rightly complain there are cases where ret
may not be set. 0 seems to be the reasonable default unless particular
slot explicitly returns -1.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
 accel/kvm/kvm-all.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index aabe097c41..d2d96d73e8 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -712,11 +712,11 @@ static int kvm_physical_log_clear(KVMMemoryListener *kml,
     KVMState *s = kvm_state;
     uint64_t start, size, offset, count;
     KVMSlot *mem;
-    int ret, i;
+    int ret = 0, i;
 
     if (!s->manual_dirty_log_protect) {
         /* No need to do explicit clear */
-        return 0;
+        return ret;
     }
 
     start = section->offset_within_address_space;
@@ -724,7 +724,7 @@ static int kvm_physical_log_clear(KVMMemoryListener *kml,
 
     if (!size) {
         /* Nothing more we can do... */
-        return 0;
+        return ret;
     }
 
     kvm_slots_lock(kml);
-- 
2.20.1


Re: [PATCH] accel/kvm: ensure ret always set
Posted by Paolo Bonzini 4 years, 6 months ago
On 02/10/19 12:22, Alex Bennée wrote:
> Some of the cross compilers rightly complain there are cases where ret
> may not be set. 0 seems to be the reasonable default unless particular
> slot explicitly returns -1.
> 
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> ---
>  accel/kvm/kvm-all.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
> index aabe097c41..d2d96d73e8 100644
> --- a/accel/kvm/kvm-all.c
> +++ b/accel/kvm/kvm-all.c
> @@ -712,11 +712,11 @@ static int kvm_physical_log_clear(KVMMemoryListener *kml,
>      KVMState *s = kvm_state;
>      uint64_t start, size, offset, count;
>      KVMSlot *mem;
> -    int ret, i;
> +    int ret = 0, i;
>  
>      if (!s->manual_dirty_log_protect) {
>          /* No need to do explicit clear */
> -        return 0;
> +        return ret;
>      }
>  
>      start = section->offset_within_address_space;
> @@ -724,7 +724,7 @@ static int kvm_physical_log_clear(KVMMemoryListener *kml,
>  
>      if (!size) {
>          /* Nothing more we can do... */
> -        return 0;
> +        return ret;
>      }
>  
>      kvm_slots_lock(kml);
> 

Queued, thanks.

Paolo


Re: [PATCH] accel/kvm: ensure ret always set
Posted by Stefano Garzarella 4 years, 6 months ago
On Wed, Oct 02, 2019 at 01:08:40PM +0200, Paolo Bonzini wrote:
> On 02/10/19 12:22, Alex Bennée wrote:
> > Some of the cross compilers rightly complain there are cases where ret
> > may not be set. 0 seems to be the reasonable default unless particular
> > slot explicitly returns -1.
> > 

Even Coverity reported it (CID 1405857).

> > Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> > ---
> >  accel/kvm/kvm-all.c | 6 +++---
> >  1 file changed, 3 insertions(+), 3 deletions(-)
> > 
> > diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
> > index aabe097c41..d2d96d73e8 100644
> > --- a/accel/kvm/kvm-all.c
> > +++ b/accel/kvm/kvm-all.c
> > @@ -712,11 +712,11 @@ static int kvm_physical_log_clear(KVMMemoryListener *kml,
> >      KVMState *s = kvm_state;
> >      uint64_t start, size, offset, count;
> >      KVMSlot *mem;
> > -    int ret, i;
> > +    int ret = 0, i;
> >  
> >      if (!s->manual_dirty_log_protect) {
> >          /* No need to do explicit clear */
> > -        return 0;
> > +        return ret;
> >      }
> >  
> >      start = section->offset_within_address_space;
> > @@ -724,7 +724,7 @@ static int kvm_physical_log_clear(KVMMemoryListener *kml,
> >  
> >      if (!size) {
> >          /* Nothing more we can do... */
> > -        return 0;
> > +        return ret;
> >      }
> >  
> >      kvm_slots_lock(kml);
> > 
> 
> Queued, thanks.
> 
> Paolo
> 

-- 

Re: [PATCH] accel/kvm: ensure ret always set
Posted by Philippe Mathieu-Daudé 4 years, 6 months ago
On 10/3/19 11:22 AM, Stefano Garzarella wrote:
> On Wed, Oct 02, 2019 at 01:08:40PM +0200, Paolo Bonzini wrote:
>> On 02/10/19 12:22, Alex Bennée wrote:
>>> Some of the cross compilers rightly complain there are cases where ret
>>> may not be set. 0 seems to be the reasonable default unless particular
>>> slot explicitly returns -1.
>>>
> 
> Even Coverity reported it (CID 1405857).

And GCC ;)

/home/phil/source/qemu/accel/kvm/kvm-all.c: In function ‘kvm_log_clear’:
/home/phil/source/qemu/accel/kvm/kvm-all.c:1121:8: error: ‘ret’ may be 
used uninitialized in this function [-Werror=maybe-uninitialized]
      if (r < 0) {
         ^
cc1: all warnings being treated as errors
make[1]: *** [/home/phil/source/qemu/rules.mak:69: accel/kvm/kvm-all.o] 
Error 1

Fixes: 4222147dfb7

>>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>>> ---
>>>   accel/kvm/kvm-all.c | 6 +++---
>>>   1 file changed, 3 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
>>> index aabe097c41..d2d96d73e8 100644
>>> --- a/accel/kvm/kvm-all.c
>>> +++ b/accel/kvm/kvm-all.c
>>> @@ -712,11 +712,11 @@ static int kvm_physical_log_clear(KVMMemoryListener *kml,
>>>       KVMState *s = kvm_state;
>>>       uint64_t start, size, offset, count;
>>>       KVMSlot *mem;
>>> -    int ret, i;
>>> +    int ret = 0, i;
>>>   
>>>       if (!s->manual_dirty_log_protect) {
>>>           /* No need to do explicit clear */
>>> -        return 0;
>>> +        return ret;
>>>       }
>>>   
>>>       start = section->offset_within_address_space;
>>> @@ -724,7 +724,7 @@ static int kvm_physical_log_clear(KVMMemoryListener *kml,
>>>   
>>>       if (!size) {
>>>           /* Nothing more we can do... */
>>> -        return 0;
>>> +        return ret;
>>>       }
>>>   
>>>       kvm_slots_lock(kml);
>>>
>>
>> Queued, thanks.
>>
>> Paolo
>>
> 

Re: [PATCH] accel/kvm: ensure ret always set
Posted by Alex Bennée 4 years, 6 months ago
Philippe Mathieu-Daudé <philmd@redhat.com> writes:

> On 10/3/19 11:22 AM, Stefano Garzarella wrote:
>> On Wed, Oct 02, 2019 at 01:08:40PM +0200, Paolo Bonzini wrote:
>>> On 02/10/19 12:22, Alex Bennée wrote:
>>>> Some of the cross compilers rightly complain there are cases where ret
>>>> may not be set. 0 seems to be the reasonable default unless particular
>>>> slot explicitly returns -1.
>>>>
>> Even Coverity reported it (CID 1405857).
>
> And GCC ;)

So my normal gcc didn't catch that - which is odd as I didn't expect the
shippable gcc's to be ahead of my local buster install.

>
> /home/phil/source/qemu/accel/kvm/kvm-all.c: In function ‘kvm_log_clear’:
> /home/phil/source/qemu/accel/kvm/kvm-all.c:1121:8: error: ‘ret’ may be
> used uninitialized in this function [-Werror=maybe-uninitialized]
>      if (r < 0) {
>         ^
> cc1: all warnings being treated as errors
> make[1]: *** [/home/phil/source/qemu/rules.mak:69:
> accel/kvm/kvm-all.o] Error 1
>
> Fixes: 4222147dfb7
>
>>>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>>>> ---
>>>>   accel/kvm/kvm-all.c | 6 +++---
>>>>   1 file changed, 3 insertions(+), 3 deletions(-)
>>>>
>>>> diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
>>>> index aabe097c41..d2d96d73e8 100644
>>>> --- a/accel/kvm/kvm-all.c
>>>> +++ b/accel/kvm/kvm-all.c
>>>> @@ -712,11 +712,11 @@ static int kvm_physical_log_clear(KVMMemoryListener *kml,
>>>>       KVMState *s = kvm_state;
>>>>       uint64_t start, size, offset, count;
>>>>       KVMSlot *mem;
>>>> -    int ret, i;
>>>> +    int ret = 0, i;
>>>>         if (!s->manual_dirty_log_protect) {
>>>>           /* No need to do explicit clear */
>>>> -        return 0;
>>>> +        return ret;
>>>>       }
>>>>         start = section->offset_within_address_space;
>>>> @@ -724,7 +724,7 @@ static int kvm_physical_log_clear(KVMMemoryListener *kml,
>>>>         if (!size) {
>>>>           /* Nothing more we can do... */
>>>> -        return 0;
>>>> +        return ret;
>>>>       }
>>>>         kvm_slots_lock(kml);
>>>>
>>>
>>> Queued, thanks.
>>>
>>> Paolo
>>>
>>


--
Alex Bennée