On 9/8/25 11:50 AM, David Hildenbrand wrote:
On 20.08.25 03:04, Anthony Yznaga wrote:
When handling a fault in an mshare range, redirect charges for page
tables and other allocations to the mshare owner rather than the
current task.
That looks rather weird. I would have thought there would be an easy way
to query the mshare owner for a given mshare mapping, and if the current
MM corresponds to that owner you know that you are running in the owner
context.
Of course, we could have a helper like is_mshare_owner(mapping, current)
or sth like that.
I'm not quite following you. Charges for newly faulted pages will be
automatically directed to the mshare owner because the mshare mm will
have its mm_owner field pointing to the owner. On the other hand,
allocations for page table pages are handled differently.
GFP_PGTABLE_USER causes the accounting to go through
__memcg_kmem_charge_page() which will charge them to the memcg for the
current task unless unless current->active_memcg is set to point to
another memcg.