diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 2ae315e4d9f6df4028173b16afce8b668263a2a7..e7f47a38fe4fa104379b4a44cae036f377eacd77 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -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) {