From: Hugh Dickins Date: Thu, 11 Aug 2022 05:06:33 +0000 (-0700) Subject: mm/shmem: shmem_replace_page() remember NR_SHMEM X-Git-Tag: v6.1-rc5~545^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=76d36dea02691a8ffa8cd7368eecbf727b8a1c0c;p=platform%2Fkernel%2Flinux-starfive.git mm/shmem: shmem_replace_page() remember NR_SHMEM Elsewhere, NR_SHMEM is updated at the same time as shmem NR_FILE_PAGES; but shmem_replace_page() was forgetting to do that - so NR_SHMEM stats could grow too big or too small, in those unusual cases when it's used. Link: https://lkml.kernel.org/r/cec7c09d-5874-e160-ada6-6e10ee48784@google.com Signed-off-by: Hugh Dickins Reviewed-by: Matthew Wilcox (Oracle) Cc: "Darrick J. Wong" Cc: Radoslaw Burny Cc: "Theodore Ts'o" Signed-off-by: Andrew Morton --- diff --git a/mm/shmem.c b/mm/shmem.c index ce20907..d075dd2 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -1659,7 +1659,9 @@ static int shmem_replace_page(struct page **pagep, gfp_t gfp, new = page_folio(newpage); mem_cgroup_migrate(old, new); __inc_lruvec_page_state(newpage, NR_FILE_PAGES); + __inc_lruvec_page_state(newpage, NR_SHMEM); __dec_lruvec_page_state(oldpage, NR_FILE_PAGES); + __dec_lruvec_page_state(oldpage, NR_SHMEM); } xa_unlock_irq(&swap_mapping->i_pages);