Re: [PATCH] mm/memcg: fix device private memcg accounting

From: Ralph Campbell
Date: Fri Oct 09 2020 - 20:23:11 EST



On 10/9/20 3:50 PM, Andrew Morton wrote:
On Fri, 9 Oct 2020 14:59:52 -0700 Ralph Campbell <rcampbell@xxxxxxxxxx> wrote:

The code in mc_handle_swap_pte() checks for non_swap_entry() and returns
NULL before checking is_device_private_entry() so device private pages
are never handled.
Fix this by checking for non_swap_entry() after handling device private
swap PTEs.

Cc: stable@xxxxxxxxxxxxxxx

I was going to ask "what are the end-user visible effects of the bug".
This is important information with a cc:stable.


I'm not sure exactly how to test this. I ran the HMM self tests but
that is a minimal sanity check. I think moving the self test from one
memory cgroup to another while it is running would exercise this patch.
I'm looking at how the test could move itself to another group after
migrating some anonymous memory to the test driver.


But this makes me suspect the answer is "there aren't any that we know
of". Are you sure a cc:stable is warranted?


I assume the memory cgroup accounting would be off somehow when moving
a process to another memory cgroup.
Currently, the device private page is charged like a normal anonymous page
when allocated and is uncharged when the page is freed so I think that path is OK.
Maybe someone who knows more about memory cgroup accounting can comment?