2024-03-09 17:25:15

by Christophe JAILLET

[permalink] [raw]
Subject: [PATCH] KVM: SVM: Remove a useless zeroing of allocated memory

Depending of the memory size needed, we clear or not the allocated memory.
This is not consistent.

So remove the zeroing of the memory in the __vmalloc() case.

Signed-off-by: Christophe JAILLET <[email protected]>
---
This is just a guess.

I don't know this code at all, but because of KVM, it is maybe safer to
clear the memory in both cases?
So, maybe it is better to use kzalloc() in the other path.
---
arch/x86/kvm/svm/sev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c
index 722186601c03..afd9485bef5a 100644
--- a/arch/x86/kvm/svm/sev.c
+++ b/arch/x86/kvm/svm/sev.c
@@ -434,7 +434,7 @@ static struct page **sev_pin_memory(struct kvm *kvm, unsigned long uaddr,
/* Avoid using vmalloc for smaller buffers. */
size = npages * sizeof(struct page *);
if (size > PAGE_SIZE)
- pages = __vmalloc(size, GFP_KERNEL_ACCOUNT | __GFP_ZERO);
+ pages = __vmalloc(size, GFP_KERNEL_ACCOUNT);
else
pages = kmalloc(size, GFP_KERNEL_ACCOUNT);

--
2.44.0



2024-03-12 18:58:40

by Sean Christopherson

[permalink] [raw]
Subject: Re: [PATCH] KVM: SVM: Remove a useless zeroing of allocated memory

On Sat, Mar 09, 2024, Christophe JAILLET wrote:
> Depending of the memory size needed, we clear or not the allocated memory.
> This is not consistent.
>
> So remove the zeroing of the memory in the __vmalloc() case.
>
> Signed-off-by: Christophe JAILLET <[email protected]>
> ---
> This is just a guess.
>
> I don't know this code at all, but because of KVM, it is maybe safer to
> clear the memory in both cases?
> So, maybe it is better to use kzalloc() in the other path.

Not zeroing should be totally fine, the array is only used to hold kernel pointers,
if KVM leaks that state and/or accesses uninitialized data, we have bigger problems :-)

2024-04-10 00:23:38

by Sean Christopherson

[permalink] [raw]
Subject: Re: [PATCH] KVM: SVM: Remove a useless zeroing of allocated memory

On Sat, 09 Mar 2024 18:15:45 +0100, Christophe JAILLET wrote:
> Depending of the memory size needed, we clear or not the allocated memory.
> This is not consistent.
>
> So remove the zeroing of the memory in the __vmalloc() case.

Applied to kvm-x86 svm, with a massaged changelog to unequivocally state that
not zeroing the memory is a-ok. Thanks!

[1/1] KVM: SVM: Remove a useless zeroing of allocated memory
https://github.com/kvm-x86/linux/commit/4710e4fc3e2a

--
https://github.com/kvm-x86/linux/tree/next