[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <419f25f5-41ef-1389-1103-3bbe4aa4ddd3@redhat.com>
Date: Fri, 22 Oct 2021 09:14:08 +0200
From: Paolo Bonzini <pbonzini@...hat.com>
To: Emanuele Giuseppe Esposito <eesposit@...hat.com>,
kvm@...r.kernel.org
Cc: Maxim Levitsky <mlevitsk@...hat.com>,
Sean Christopherson <seanjc@...gle.com>,
Vitaly Kuznetsov <vkuznets@...hat.com>,
Wanpeng Li <wanpengli@...cent.com>,
Jim Mattson <jmattson@...gle.com>,
Joerg Roedel <joro@...tes.org>,
Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...hat.com>, Borislav Petkov <bp@...en8.de>,
x86@...nel.org, "H. Peter Anvin" <hpa@...or.com>,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3 7/8] nSVM: use vmcb_ctrl_area_cached instead of
vmcb_control_area in struct svm_nested_state
On 11/10/21 16:37, Emanuele Giuseppe Esposito wrote:
> ZE))
> return -EFAULT;
> - if (copy_to_user(&user_vmcb->control, &svm->nested.ctl,
> + nested_copy_vmcb_cache_to_control(&ctl_temp, &svm->nested.ctl);
> + if (copy_to_user(&user_vmcb->control, &ctl_temp,
> sizeof(user_vmcb->control)))
> return -EFAULT;
This needs a memset of ctl_temp so that kernel memory contents are not
leaked to userspace. However, it's also better to avoid large structs
on the stack, and do a quick kzalloc/kfree instead:
- nested_copy_vmcb_cache_to_control(&ctl_temp, &svm->nested.ctl);
- if (copy_to_user(&user_vmcb->control, &ctl_temp,
- sizeof(user_vmcb->control)))
+
+ ctl = kzalloc(sizeof(*ctl), GFP_KERNEL);
+ if (!ctl)
+ return -ENOMEM;
+ nested_copy_vmcb_cache_to_control(ctl, &svm->nested.ctl);
+ r = copy_to_user(&user_vmcb->control, ctl,
+ sizeof(user_vmcb->control));
+ kfree(ctl);
+ if (r)
return -EFAULT;
I can do this change when committing too.
Paolo
Powered by blists - more mailing lists