Re: [RFC PATCH 01/19] mm: Introduce vm_account

From: David Hildenbrand
Date: Tue Jan 31 2023 - 09:01:15 EST


On 24.01.23 06:42, Alistair Popple wrote:
Kernel drivers that pin pages should account these pages against
either user->locked_vm or mm->pinned_vm and fail the pinning if
RLIMIT_MEMLOCK is exceeded and CAP_IPC_LOCK isn't held.

Currently drivers open-code this accounting and use various methods to
update the atomic variables and check against the limits leading to
various bugs and inconsistencies. To fix this introduce a standard
interface for charging pinned and locked memory. As this involves
taking references on kernel objects such as mm_struct or user_struct
we introduce a new vm_account struct to hold these references. Several
helper functions are then introduced to grab references and check
limits.

As the way these limits are charged and enforced is visible to
userspace we need to be careful not to break existing applications by
charging to different counters. As a result the vm_account functions
support accounting to different counters as required.

A future change will extend this to also account against a cgroup for
pinned pages.

The term "vm_account" is misleading, no? VM_ACCOUNT is for accounting towards the commit limit ....

--
Thanks,

David / dhildenb