aboutsummaryrefslogtreecommitdiffstats
path: root/mm/memcontrol.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/memcontrol.c')
-rw-r--r--mm/memcontrol.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 6ad309e9825f..964a70035e8f 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -1171,7 +1171,9 @@ __mem_cgroup_uncharge_common(struct page *page, enum charge_type ctype)
1171 mz = page_cgroup_zoneinfo(pc); 1171 mz = page_cgroup_zoneinfo(pc);
1172 unlock_page_cgroup(pc); 1172 unlock_page_cgroup(pc);
1173 1173
1174 css_put(&mem->css); 1174 /* at swapout, this memcg will be accessed to record to swap */
1175 if (ctype != MEM_CGROUP_CHARGE_TYPE_SWAPOUT)
1176 css_put(&mem->css);
1175 1177
1176 return mem; 1178 return mem;
1177 1179
@@ -1212,6 +1214,8 @@ void mem_cgroup_uncharge_swapcache(struct page *page, swp_entry_t ent)
1212 swap_cgroup_record(ent, memcg); 1214 swap_cgroup_record(ent, memcg);
1213 mem_cgroup_get(memcg); 1215 mem_cgroup_get(memcg);
1214 } 1216 }
1217 if (memcg)
1218 css_put(&memcg->css);
1215} 1219}
1216 1220
1217#ifdef CONFIG_CGROUP_MEM_RES_CTLR_SWAP 1221#ifdef CONFIG_CGROUP_MEM_RES_CTLR_SWAP