]> Pileus Git - ~andy/linux/blobdiff - fs/proc/page.c
Merge tag 'fixes-for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm...
[~andy/linux] / fs / proc / page.c
index 7fcd0d60a9680ae1eb4998633c51ea90e730209f..b8730d9ebaee651244d0d7e46e687792b46b0c9f 100644 (file)
@@ -115,7 +115,13 @@ u64 stable_page_flags(struct page *page)
                u |= 1 << KPF_COMPOUND_TAIL;
        if (PageHuge(page))
                u |= 1 << KPF_HUGE;
-       else if (PageTransCompound(page))
+       /*
+        * PageTransCompound can be true for non-huge compound pages (slab
+        * pages or pages allocated by drivers with __GFP_COMP) because it
+        * just checks PG_head/PG_tail, so we need to check PageLRU to make
+        * sure a given page is a thp, not a non-huge compound page.
+        */
+       else if (PageTransCompound(page) && PageLRU(compound_trans_head(page)))
                u |= 1 << KPF_THP;
 
        /*