arch/x86/kvm/svm/nested.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
The fixed size temporary variables vmcb_control_area and vmcb_save_area
allocated in svm_set_nested_state() are released when the function exits.
Meanwhile, svm_set_nested_state() also have vcpu mutex held to avoid
massive concurrency allocation, so we don't need to set GFP_KERNEL_ACCOUNT.
Signed-off-by: Yongqiang Liu <liuyongqiang13@huawei.com>
---
arch/x86/kvm/svm/nested.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c
index 6f704c1037e5..d5314cb7dff4 100644
--- a/arch/x86/kvm/svm/nested.c
+++ b/arch/x86/kvm/svm/nested.c
@@ -1693,8 +1693,8 @@ static int svm_set_nested_state(struct kvm_vcpu *vcpu,
return -EINVAL;
ret = -ENOMEM;
- ctl = kzalloc(sizeof(*ctl), GFP_KERNEL_ACCOUNT);
- save = kzalloc(sizeof(*save), GFP_KERNEL_ACCOUNT);
+ ctl = kzalloc(sizeof(*ctl), GFP_KERNEL);
+ save = kzalloc(sizeof(*save), GFP_KERNEL);
if (!ctl || !save)
goto out_free;
--
2.25.1
On Wed, 21 Aug 2024 19:27:37 +0800, Yongqiang Liu wrote:
> The fixed size temporary variables vmcb_control_area and vmcb_save_area
> allocated in svm_set_nested_state() are released when the function exits.
> Meanwhile, svm_set_nested_state() also have vcpu mutex held to avoid
> massive concurrency allocation, so we don't need to set GFP_KERNEL_ACCOUNT.
>
>
Applied to kvm-x86 svm, thanks!
[1/1] KVM: SVM: Remove unnecessary GFP_KERNEL_ACCOUNT in svm_set_nested_state()
https://github.com/kvm-x86/linux/commit/c501062bb22b
--
https://github.com/kvm-x86/linux/tree/next
On 21/08/2024 11:27 pm, Yongqiang Liu wrote:
> The fixed size temporary variables vmcb_control_area and vmcb_save_area
> allocated in svm_set_nested_state() are released when the function exits.
> Meanwhile, svm_set_nested_state() also have vcpu mutex held to avoid
> massive concurrency allocation, so we don't need to set GFP_KERNEL_ACCOUNT.
Hi Sean/Paolo,
Seems more patches are popping up regarding to whether to use _ACCOUNT
for temporary memory allocation. Could we have a definitive guide on this?
As you know, one similar patch was merged and now is in upstream:
dd103407ca315 ("KVM: X86: Remove unnecessary GFP_KERNEL_ACCOUNT for
temporary variables")
Also see:
https://lore.kernel.org/kvm/20240715101224.90958-1-kai.huang@intel.com/T/
>
> Signed-off-by: Yongqiang Liu <liuyongqiang13@huawei.com>
> ---
> arch/x86/kvm/svm/nested.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c
> index 6f704c1037e5..d5314cb7dff4 100644
> --- a/arch/x86/kvm/svm/nested.c
> +++ b/arch/x86/kvm/svm/nested.c
> @@ -1693,8 +1693,8 @@ static int svm_set_nested_state(struct kvm_vcpu *vcpu,
> return -EINVAL;
>
> ret = -ENOMEM;
> - ctl = kzalloc(sizeof(*ctl), GFP_KERNEL_ACCOUNT);
> - save = kzalloc(sizeof(*save), GFP_KERNEL_ACCOUNT);
> + ctl = kzalloc(sizeof(*ctl), GFP_KERNEL);
> + save = kzalloc(sizeof(*save), GFP_KERNEL);
> if (!ctl || !save)
> goto out_free;
>
On Fri, Aug 23, 2024, Kai Huang wrote: > > > On 21/08/2024 11:27 pm, Yongqiang Liu wrote: > > The fixed size temporary variables vmcb_control_area and vmcb_save_area > > allocated in svm_set_nested_state() are released when the function exits. > > Meanwhile, svm_set_nested_state() also have vcpu mutex held to avoid > > massive concurrency allocation, so we don't need to set GFP_KERNEL_ACCOUNT. > > Hi Sean/Paolo, > > Seems more patches are popping up regarding to whether to use _ACCOUNT for > temporary memory allocation. Could we have a definitive guide on this? If the allocations are temporary, e.g. scoped to exactly one function, not massive (use best judgment), and can't be used in any kind of novel DDoS attack, e.g. are limited to one per vCPU or so, then they don't need to be accounted. At least, that's my take on things.
On Fri, 2024-08-23 at 17:00 -0700, Sean Christopherson wrote: > On Fri, Aug 23, 2024, Kai Huang wrote: > > > > > > On 21/08/2024 11:27 pm, Yongqiang Liu wrote: > > > The fixed size temporary variables vmcb_control_area and vmcb_save_area > > > allocated in svm_set_nested_state() are released when the function exits. > > > Meanwhile, svm_set_nested_state() also have vcpu mutex held to avoid > > > massive concurrency allocation, so we don't need to set GFP_KERNEL_ACCOUNT. > > > > Hi Sean/Paolo, > > > > Seems more patches are popping up regarding to whether to use _ACCOUNT for > > temporary memory allocation. Could we have a definitive guide on this? > > If the allocations are temporary, e.g. scoped to exactly one function, not massive > (use best judgment), and can't be used in any kind of novel DDoS attack, e.g. are > limited to one per vCPU or so, then they don't need to be accounted. > > At least, that's my take on things. That makes sense. Thanks.
© 2016 - 2026 Red Hat, Inc.