[PATCH 2/3] accel/kvm: Zero out mem explicitly in kvm_set_user_memory_region()

Xiaoyao Li posted 3 patches 3 months, 3 weeks ago
Maintainers: Paolo Bonzini <pbonzini@redhat.com>
[PATCH 2/3] accel/kvm: Zero out mem explicitly in kvm_set_user_memory_region()
Posted by Xiaoyao Li 3 months, 3 weeks ago
Zero out the entire mem explicitly before it's used, to ensure the unused
feilds (pad1, pad2) are all zeros. Otherwise, it might cause problem when
the pad fields are extended by future KVM.

Fixes: ce5a983233b4 ("kvm: Enable KVM_SET_USER_MEMORY_REGION2 for memslot")
Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
---
 accel/kvm/kvm-all.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index 14d47246ca63..4f4c30fc84b2 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -361,6 +361,7 @@ static int kvm_set_user_memory_region(KVMMemoryListener *kml, KVMSlot *slot, boo
     struct kvm_userspace_memory_region2 mem;
     int ret;
 
+    memset(&mem, 0, sizeof(mem));
     mem.slot = slot->slot | (kml->as_id << 16);
     mem.guest_phys_addr = slot->start_addr;
     mem.userspace_addr = (unsigned long)slot->ram;
-- 
2.43.0
Re: [PATCH 2/3] accel/kvm: Zero out mem explicitly in kvm_set_user_memory_region()
Posted by Philippe Mathieu-Daudé 3 months, 3 weeks ago
On 23/7/25 09:09, Xiaoyao Li wrote:
> Zero out the entire mem explicitly before it's used, to ensure the unused
> feilds (pad1, pad2) are all zeros. Otherwise, it might cause problem when
> the pad fields are extended by future KVM.
> 
> Fixes: ce5a983233b4 ("kvm: Enable KVM_SET_USER_MEMORY_REGION2 for memslot")
> Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
> ---
>   accel/kvm/kvm-all.c | 1 +
>   1 file changed, 1 insertion(+)
> 
> diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
> index 14d47246ca63..4f4c30fc84b2 100644
> --- a/accel/kvm/kvm-all.c
> +++ b/accel/kvm/kvm-all.c
> @@ -361,6 +361,7 @@ static int kvm_set_user_memory_region(KVMMemoryListener *kml, KVMSlot *slot, boo
>       struct kvm_userspace_memory_region2 mem;

Or:

         struct kvm_userspace_memory_region2 mem = { };

Anyhow,

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>

>       int ret;
>   
> +    memset(&mem, 0, sizeof(mem));
>       mem.slot = slot->slot | (kml->as_id << 16);
>       mem.guest_phys_addr = slot->start_addr;
>       mem.userspace_addr = (unsigned long)slot->ram;