Re: [PATCH] mm/memcg: fix 5.10 backport of splitting page memcg

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Mar 28, 2021 at 05:13:13PM -0700, Hugh Dickins wrote:
> The straight backport of 5.12's e1baddf8475b ("mm/memcg: set memcg when
> splitting page") works fine in 5.11, but turned out to be wrong for 5.10:
> because that relies on a separate flag, which must also be set for the
> memcg to be recognized and uncharged and cleared when freeing. Fix that.
> 
> Signed-off-by: Hugh Dickins <hughd@xxxxxxxxxx>
> ---
> 
>  mm/memcontrol.c |    6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> --- a/mm/memcontrol.c
> +++ b/mm/memcontrol.c
> @@ -3274,13 +3274,17 @@ void obj_cgroup_uncharge(struct obj_cgro
>  void split_page_memcg(struct page *head, unsigned int nr)
>  {
>  	struct mem_cgroup *memcg = head->mem_cgroup;
> +	int kmemcg = PageKmemcg(head);
>  	int i;
>  
>  	if (mem_cgroup_disabled() || !memcg)
>  		return;
>  
> -	for (i = 1; i < nr; i++)
> +	for (i = 1; i < nr; i++) {
>  		head[i].mem_cgroup = memcg;
> +		if (kmemcg)
> +			__SetPageKmemcg(head + i);
> +	}
>  	css_get_many(&memcg->css, nr - 1);
>  }
>  

Thanks for the fix, now queued up.

greg k-h



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux