diff options
Diffstat (limited to 'mm/rmap.c')
-rw-r--r-- | mm/rmap.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -1155,7 +1155,10 @@ void page_remove_rmap(struct page *page) | |||
1155 | } else { | 1155 | } else { |
1156 | __dec_zone_page_state(page, NR_FILE_MAPPED); | 1156 | __dec_zone_page_state(page, NR_FILE_MAPPED); |
1157 | mem_cgroup_dec_page_stat(page, MEMCG_NR_FILE_MAPPED); | 1157 | mem_cgroup_dec_page_stat(page, MEMCG_NR_FILE_MAPPED); |
1158 | mem_cgroup_end_update_page_stat(page, &locked, &flags); | ||
1158 | } | 1159 | } |
1160 | if (unlikely(PageMlocked(page))) | ||
1161 | clear_page_mlock(page); | ||
1159 | /* | 1162 | /* |
1160 | * It would be tidy to reset the PageAnon mapping here, | 1163 | * It would be tidy to reset the PageAnon mapping here, |
1161 | * but that might overwrite a racing page_add_anon_rmap | 1164 | * but that might overwrite a racing page_add_anon_rmap |
@@ -1165,6 +1168,7 @@ void page_remove_rmap(struct page *page) | |||
1165 | * Leaving it set also helps swapoff to reinstate ptes | 1168 | * Leaving it set also helps swapoff to reinstate ptes |
1166 | * faster for those pages still in swapcache. | 1169 | * faster for those pages still in swapcache. |
1167 | */ | 1170 | */ |
1171 | return; | ||
1168 | out: | 1172 | out: |
1169 | if (!anon) | 1173 | if (!anon) |
1170 | mem_cgroup_end_update_page_stat(page, &locked, &flags); | 1174 | mem_cgroup_end_update_page_stat(page, &locked, &flags); |