aboutsummaryrefslogtreecommitdiffstats
path: root/fs/proc/page.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/proc/page.c')
-rw-r--r--fs/proc/page.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/proc/page.c b/fs/proc/page.c
index b2855eea5405..712f1b9992cc 100644
--- a/fs/proc/page.c
+++ b/fs/proc/page.c
@@ -103,9 +103,9 @@ u64 stable_page_flags(struct page *page)
103 * pseudo flags for the well known (anonymous) memory mapped pages 103 * pseudo flags for the well known (anonymous) memory mapped pages
104 * 104 *
105 * Note that page->_mapcount is overloaded in SLOB/SLUB/SLQB, so the 105 * Note that page->_mapcount is overloaded in SLOB/SLUB/SLQB, so the
106 * simple test in page_mapcount() is not enough. 106 * simple test in page_mapped() is not enough.
107 */ 107 */
108 if (!PageSlab(page) && page_mapcount(page)) 108 if (!PageSlab(page) && page_mapped(page))
109 u |= 1 << KPF_MMAP; 109 u |= 1 << KPF_MMAP;
110 if (PageAnon(page)) 110 if (PageAnon(page))
111 u |= 1 << KPF_ANON; 111 u |= 1 << KPF_ANON;
@@ -148,6 +148,8 @@ u64 stable_page_flags(struct page *page)
148 */ 148 */
149 if (PageBuddy(page)) 149 if (PageBuddy(page))
150 u |= 1 << KPF_BUDDY; 150 u |= 1 << KPF_BUDDY;
151 else if (page_count(page) == 0 && is_free_buddy_page(page))
152 u |= 1 << KPF_BUDDY;
151 153
152 if (PageBalloon(page)) 154 if (PageBalloon(page))
153 u |= 1 << KPF_BALLOON; 155 u |= 1 << KPF_BALLOON;
@@ -158,6 +160,8 @@ u64 stable_page_flags(struct page *page)
158 u |= kpf_copy_bit(k, KPF_LOCKED, PG_locked); 160 u |= kpf_copy_bit(k, KPF_LOCKED, PG_locked);
159 161
160 u |= kpf_copy_bit(k, KPF_SLAB, PG_slab); 162 u |= kpf_copy_bit(k, KPF_SLAB, PG_slab);
163 if (PageTail(page) && PageSlab(compound_head(page)))
164 u |= 1 << KPF_SLAB;
161 165
162 u |= kpf_copy_bit(k, KPF_ERROR, PG_error); 166 u |= kpf_copy_bit(k, KPF_ERROR, PG_error);
163 u |= kpf_copy_bit(k, KPF_DIRTY, PG_dirty); 167 u |= kpf_copy_bit(k, KPF_DIRTY, PG_dirty);