summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Xu <peterx@redhat.com>2023-03-03 10:12:18 -0500
committerAndrew Morton <akpm@linux-foundation.org>2023-03-28 16:20:11 -0700
commit7cb1d7ef667716a9ff4e692e7ba1c3817d872222 (patch)
treec7865b228dc37ccbe3fbdf421b4d695b13e4d3ef
parent9dabf6e1374519f89d9fc326a129b5cc35088479 (diff)
downloadlinux-7cb1d7ef667716a9ff4e692e7ba1c3817d872222.tar.gz
linux-7cb1d7ef667716a9ff4e692e7ba1c3817d872222.tar.bz2
linux-7cb1d7ef667716a9ff4e692e7ba1c3817d872222.zip
mm/khugepaged: cleanup memcg uncharge for failure path
Explicit memcg uncharging is not needed when the memcg accounting has the same lifespan of the page/folio. That becomes the case for khugepaged after Yang & Zach's recent rework so the hpage will be allocated for each collapse rather than being cached. Cleanup the explicit memcg uncharge in khugepaged failure path and leave that for put_page(). Link: https://lkml.kernel.org/r/20230303151218.311015-1-peterx@redhat.com Signed-off-by: Peter Xu <peterx@redhat.com> Suggested-by: Zach O'Keefe <zokeefe@google.com> Reviewed-by: Zach O'Keefe <zokeefe@google.com> Reviewed-by: Yang Shi <shy828301@gmail.com> Cc: David Stevens <stevensd@chromium.org> Cc: Johannes Weiner <hannes@cmpxchg.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-rw-r--r--mm/khugepaged.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/mm/khugepaged.c b/mm/khugepaged.c
index 17562c692546..074ea534f786 100644
--- a/mm/khugepaged.c
+++ b/mm/khugepaged.c
@@ -1135,10 +1135,8 @@ static int collapse_huge_page(struct mm_struct *mm, unsigned long address,
out_up_write:
mmap_write_unlock(mm);
out_nolock:
- if (hpage) {
- mem_cgroup_uncharge(page_folio(hpage));
+ if (hpage)
put_page(hpage);
- }
trace_mm_collapse_huge_page(mm, result == SCAN_SUCCEED, result);
return result;
}
@@ -2137,10 +2135,8 @@ xa_unlocked:
unlock_page(hpage);
out:
VM_BUG_ON(!list_empty(&pagelist));
- if (hpage) {
- mem_cgroup_uncharge(page_folio(hpage));
+ if (hpage)
put_page(hpage);
- }
trace_mm_khugepaged_collapse_file(mm, hpage, index, is_shmem, addr, file, nr, result);
return result;