Commit abe2895b authored by Huang Ying's avatar Huang Ying Committed by Linus Torvalds

memcg, THP, swap: avoid to duplicated charge THP in swap cache

For a THP (Transparent Huge Page), tail_page->mem_cgroup is NULL.  So to
check whether the page is charged already, we need to check the head
page.  This is not an issue before because it is impossible for a THP to
be in the swap cache before.  But after we add delaying splitting THP
after swapped out support, it is possible now.

Link: default avatar"Huang, Ying" <>
Cc: Johannes Weiner <>
Cc: Minchan Kim <>
Cc: Michal Hocko <>
Cc: Andrea Arcangeli <>
Cc: "Kirill A . Shutemov" <>
Cc: Dan Williams <>
Cc: Hugh Dickins <>
Cc: Jens Axboe <>
Cc: Rik van Riel <>
Cc: Ross Zwisler <> [for brd.c, zram_drv.c, pmem.c]
Cc: Shaohua Li <>
Cc: Vishal L Verma <>
Signed-off-by: default avatarAndrew Morton <>
Signed-off-by: default avatarLinus Torvalds <>
parent 3e14a57b
......@@ -5430,7 +5430,7 @@ int mem_cgroup_try_charge(struct page *page, struct mm_struct *mm,
* in turn serializes uncharging.
VM_BUG_ON_PAGE(!PageLocked(page), page);
if (page->mem_cgroup)
if (compound_head(page)->mem_cgroup)
goto out;
if (do_swap_account) {
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment