• Mina Almasry's avatar
    mm/hugetlb_cgroup: fix hugetlb_cgroup migration · 9808895e
    Mina Almasry authored
    Commit c32300516047 ("hugetlb_cgroup: add interface for charge/uncharge
    hugetlb reservations") mistakingly doesn't handle the migration of *both*
    the reservation hugetlb_cgroup and the fault hugetlb_cgroup correctly.
    
    What should happen is that both cgroups shuold be queried from the old
    page, then both set to NULL on the old page, then both inserted into the
    new page.
    
    The mistake also creates the following warning:
    
    mm/hugetlb_cgroup.c: In function 'hugetlb_cgroup_migrate':
    mm/hugetlb_cgroup.c:777:25: warning: variable 'h_cg' set but not used
    [-Wunused-but-set-variable]
      struct hugetlb_cgroup *h_cg;
                             ^~~~
    
    Solution is to add the missing steps, namly setting the reservation
    hugetlb_cgroup to NULL on the old page, and setting the fault
    hugetlb_cgroup on the new page.
    
    Fixes: c32300516047 ("hugetlb_cgroup: add interface for charge/uncharge hugetlb reservations")
    Reported-by: default avatarQian Cai <cai@lca.pw>
    Signed-off-by: default avatarMina Almasry <almasrymina@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Greg Thelen <gthelen@google.com>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Sandipan Das <sandipan@linux.ibm.com>
    Cc: Shakeel Butt <shakeelb@google.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Link: http://lkml.kernel.org/r/20200218194727.46995-1-almasrymina@google.comSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    9808895e
hugetlb_cgroup.c 21.6 KB