diff options
Diffstat (limited to 'mm')
-rw-r--r-- | mm/debug.c | 5 | ||||
-rw-r--r-- | mm/memcontrol.c | 15 | ||||
-rw-r--r-- | mm/page_alloc.c | 12 |
3 files changed, 12 insertions, 20 deletions
diff --git a/mm/debug.c b/mm/debug.c index 5ce45c9a29b5..0e58f3211f89 100644 --- a/mm/debug.c +++ b/mm/debug.c | |||
@@ -95,7 +95,10 @@ void dump_page_badflags(struct page *page, const char *reason, | |||
95 | dump_flags(page->flags & badflags, | 95 | dump_flags(page->flags & badflags, |
96 | pageflag_names, ARRAY_SIZE(pageflag_names)); | 96 | pageflag_names, ARRAY_SIZE(pageflag_names)); |
97 | } | 97 | } |
98 | mem_cgroup_print_bad_page(page); | 98 | #ifdef CONFIG_MEMCG |
99 | if (page->mem_cgroup) | ||
100 | pr_alert("page->mem_cgroup:%p\n", page->mem_cgroup); | ||
101 | #endif | ||
99 | } | 102 | } |
100 | 103 | ||
101 | void dump_page(struct page *page, const char *reason) | 104 | void dump_page(struct page *page, const char *reason) |
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index ab270e34ba3e..1869cb64d089 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c | |||
@@ -3157,21 +3157,6 @@ static inline int mem_cgroup_move_swap_account(swp_entry_t entry, | |||
3157 | } | 3157 | } |
3158 | #endif | 3158 | #endif |
3159 | 3159 | ||
3160 | #ifdef CONFIG_DEBUG_VM | ||
3161 | bool mem_cgroup_bad_page_check(struct page *page) | ||
3162 | { | ||
3163 | if (mem_cgroup_disabled()) | ||
3164 | return false; | ||
3165 | |||
3166 | return page->mem_cgroup != NULL; | ||
3167 | } | ||
3168 | |||
3169 | void mem_cgroup_print_bad_page(struct page *page) | ||
3170 | { | ||
3171 | pr_alert("page->mem_cgroup:%p\n", page->mem_cgroup); | ||
3172 | } | ||
3173 | #endif | ||
3174 | |||
3175 | static DEFINE_MUTEX(memcg_limit_mutex); | 3160 | static DEFINE_MUTEX(memcg_limit_mutex); |
3176 | 3161 | ||
3177 | static int mem_cgroup_resize_limit(struct mem_cgroup *memcg, | 3162 | static int mem_cgroup_resize_limit(struct mem_cgroup *memcg, |
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 22cfdeffbf69..a7198c065999 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -640,8 +640,10 @@ static inline int free_pages_check(struct page *page) | |||
640 | bad_reason = "PAGE_FLAGS_CHECK_AT_FREE flag(s) set"; | 640 | bad_reason = "PAGE_FLAGS_CHECK_AT_FREE flag(s) set"; |
641 | bad_flags = PAGE_FLAGS_CHECK_AT_FREE; | 641 | bad_flags = PAGE_FLAGS_CHECK_AT_FREE; |
642 | } | 642 | } |
643 | if (unlikely(mem_cgroup_bad_page_check(page))) | 643 | #ifdef CONFIG_MEMCG |
644 | bad_reason = "cgroup check failed"; | 644 | if (unlikely(page->mem_cgroup)) |
645 | bad_reason = "page still charged to cgroup"; | ||
646 | #endif | ||
645 | if (unlikely(bad_reason)) { | 647 | if (unlikely(bad_reason)) { |
646 | bad_page(page, bad_reason, bad_flags); | 648 | bad_page(page, bad_reason, bad_flags); |
647 | return 1; | 649 | return 1; |
@@ -900,8 +902,10 @@ static inline int check_new_page(struct page *page) | |||
900 | bad_reason = "PAGE_FLAGS_CHECK_AT_PREP flag set"; | 902 | bad_reason = "PAGE_FLAGS_CHECK_AT_PREP flag set"; |
901 | bad_flags = PAGE_FLAGS_CHECK_AT_PREP; | 903 | bad_flags = PAGE_FLAGS_CHECK_AT_PREP; |
902 | } | 904 | } |
903 | if (unlikely(mem_cgroup_bad_page_check(page))) | 905 | #ifdef CONFIG_MEMCG |
904 | bad_reason = "cgroup check failed"; | 906 | if (unlikely(page->mem_cgroup)) |
907 | bad_reason = "page still charged to cgroup"; | ||
908 | #endif | ||
905 | if (unlikely(bad_reason)) { | 909 | if (unlikely(bad_reason)) { |
906 | bad_page(page, bad_reason, bad_flags); | 910 | bad_page(page, bad_reason, bad_flags); |
907 | return 1; | 911 | return 1; |