[PATCH] target/i386/kvm: Silence warning from Valgrind about uninitialized bytes

Thomas Huth posted 1 patch 4 years, 7 months ago
Test docker-clang@ubuntu failed
Test docker-mingw@fedora passed
Test docker-quick@centos7 passed
Test checkpatch passed
Test asan passed
Test FreeBSD failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20190924074738.13104-1-thuth@redhat.com
Maintainers: Eduardo Habkost <ehabkost@redhat.com>, Richard Henderson <rth@twiddle.net>, Paolo Bonzini <pbonzini@redhat.com>, Marcelo Tosatti <mtosatti@redhat.com>
target/i386/kvm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] target/i386/kvm: Silence warning from Valgrind about uninitialized bytes
Posted by Thomas Huth 4 years, 7 months ago
When I run QEMU with KVM under Valgrind, I currently get this warning:

 Syscall param ioctl(generic) points to uninitialised byte(s)
    at 0x95BA45B: ioctl (in /usr/lib64/libc-2.28.so)
    by 0x429DC3: kvm_ioctl (kvm-all.c:2365)
    by 0x51B249: kvm_arch_get_supported_msr_feature (kvm.c:469)
    by 0x4C2A49: x86_cpu_get_supported_feature_word (cpu.c:3765)
    by 0x4C4116: x86_cpu_expand_features (cpu.c:5065)
    by 0x4C7F8D: x86_cpu_realizefn (cpu.c:5242)
    by 0x5961F3: device_set_realized (qdev.c:835)
    by 0x7038F6: property_set_bool (object.c:2080)
    by 0x707EFE: object_property_set_qobject (qom-qobject.c:26)
    by 0x705814: object_property_set_bool (object.c:1338)
    by 0x498435: pc_new_cpu (pc.c:1549)
    by 0x49C67D: pc_cpus_init (pc.c:1681)
  Address 0x1ffeffee74 is on thread 1's stack
  in frame #2, created by kvm_arch_get_supported_msr_feature (kvm.c:445)

It's harmless, but a little bit annoying, so silence it by properly
initializing the whole structure with zeroes.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 target/i386/kvm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/i386/kvm.c b/target/i386/kvm.c
index 92069099ab..bd92dabea6 100644
--- a/target/i386/kvm.c
+++ b/target/i386/kvm.c
@@ -447,7 +447,7 @@ uint32_t kvm_arch_get_supported_msr_feature(KVMState *s, uint32_t index)
     struct {
         struct kvm_msrs info;
         struct kvm_msr_entry entries[1];
-    } msr_data;
+    } msr_data = {};
     uint32_t ret;
 
     if (kvm_feature_msrs == NULL) { /* Host doesn't support feature MSRs */
-- 
2.18.1


Re: [PATCH] target/i386/kvm: Silence warning from Valgrind about uninitialized bytes
Posted by Paolo Bonzini 4 years, 7 months ago
On 24/09/19 09:47, Thomas Huth wrote:
> When I run QEMU with KVM under Valgrind, I currently get this warning:
> 
>  Syscall param ioctl(generic) points to uninitialised byte(s)
>     at 0x95BA45B: ioctl (in /usr/lib64/libc-2.28.so)
>     by 0x429DC3: kvm_ioctl (kvm-all.c:2365)
>     by 0x51B249: kvm_arch_get_supported_msr_feature (kvm.c:469)
>     by 0x4C2A49: x86_cpu_get_supported_feature_word (cpu.c:3765)
>     by 0x4C4116: x86_cpu_expand_features (cpu.c:5065)
>     by 0x4C7F8D: x86_cpu_realizefn (cpu.c:5242)
>     by 0x5961F3: device_set_realized (qdev.c:835)
>     by 0x7038F6: property_set_bool (object.c:2080)
>     by 0x707EFE: object_property_set_qobject (qom-qobject.c:26)
>     by 0x705814: object_property_set_bool (object.c:1338)
>     by 0x498435: pc_new_cpu (pc.c:1549)
>     by 0x49C67D: pc_cpus_init (pc.c:1681)
>   Address 0x1ffeffee74 is on thread 1's stack
>   in frame #2, created by kvm_arch_get_supported_msr_feature (kvm.c:445)
> 
> It's harmless, but a little bit annoying, so silence it by properly
> initializing the whole structure with zeroes.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  target/i386/kvm.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/target/i386/kvm.c b/target/i386/kvm.c
> index 92069099ab..bd92dabea6 100644
> --- a/target/i386/kvm.c
> +++ b/target/i386/kvm.c
> @@ -447,7 +447,7 @@ uint32_t kvm_arch_get_supported_msr_feature(KVMState *s, uint32_t index)
>      struct {
>          struct kvm_msrs info;
>          struct kvm_msr_entry entries[1];
> -    } msr_data;
> +    } msr_data = {};
>      uint32_t ret;
>  
>      if (kvm_feature_msrs == NULL) { /* Host doesn't support feature MSRs */
> 

Queued, thanks.

Paolo