Re: [PATCH v3 03/15] perf: Split out VM accounting

From: Lorenzo Stoakes
Date: Wed Aug 13 2025 - 01:37:33 EST


On Tue, Aug 12, 2025 at 12:39:01PM +0200, Peter Zijlstra wrote:
> From: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
>
> Similary to the mlock limit calculation the VM accounting is required for

NIT: Similary -> Similarly

> both the ringbuffer and the AUX buffer allocations.
>
> To prepare for splitting them out into seperate functions, move the

NIT: Seperate -> Separate

And that's the end of the typo nits ;)

> accounting into a helper function.
>
> Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
> Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@xxxxxxxxxx>
> Link: https://lkml.kernel.org/r/20250811070620.527392167@xxxxxxxxxxxxx
> ---
> kernel/events/core.c | 13 +++++++++----
> 1 file changed, 9 insertions(+), 4 deletions(-)
>
> --- a/kernel/events/core.c
> +++ b/kernel/events/core.c
> @@ -6962,10 +6962,17 @@ static bool perf_mmap_calc_limits(struct
> return locked <= lock_limit || !perf_is_paranoid() || capable(CAP_IPC_LOCK);
> }
>
> +static void perf_mmap_account(struct vm_area_struct *vma, long user_extra, long extra)
> +{
> + struct user_struct *user = current_user();
> +
> + atomic_long_add(user_extra, &user->locked_vm);
> + atomic64_add(extra, &vma->vm_mm->pinned_vm);
> +}
> +
> static int perf_mmap(struct file *file, struct vm_area_struct *vma)
> {
> struct perf_event *event = file->private_data;
> - struct user_struct *user = current_user();
> unsigned long vma_size, nr_pages;
> long user_extra = 0, extra = 0;
> struct mutex *aux_mutex = NULL;
> @@ -7136,9 +7143,7 @@ static int perf_mmap(struct file *file,
>
> unlock:
> if (!ret) {
> - atomic_long_add(user_extra, &user->locked_vm);
> - atomic64_add(extra, &vma->vm_mm->pinned_vm);
> -
> + perf_mmap_account(vma, user_extra, extra);
> atomic_inc(&event->mmap_count);
> } else if (rb) {
> /* AUX allocation failed */
>
>