]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
fs/proc: fix KPF_KSM reported for all anonymous pages
authorJinjiang Tu <tujinjiang@huawei.com>
Fri, 26 Jun 2026 01:32:52 +0000 (09:32 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 2 Jul 2026 02:02:54 +0000 (19:02 -0700)
Reading /proc/kpageflags for any anonymous page returns KPF_KSM set, even
when KSM is not in use.  As a result, tools misclassify all anonymous
pages as KSM merged.

In stable_page_flags(), if the page is anonymous, then use (mapping &
FOLIO_MAPPING_KSM) check to identify if the anonymous page is KSM page.
However, FOLIO_MAPPING_KSM is FOLIO_MAPPING_ANON | FOLIO_MAPPING_ANON_KSM,
(mapping & FOLIO_MAPPING_KSM) check returns true for all anonymous pages.

To fix it, use FOLIO_MAPPING_ANON_KSM instead.

Link: https://lore.kernel.org/20260629033122.774318-1-tujinjiang@huawei.com
Link: https://lore.kernel.org/20260626013252.2846774-1-tujinjiang@huawei.com
Fixes: dee3d0bef2b0 ("proc: rewrite stable_page_flags()")
Signed-off-by: Jinjiang Tu <tujinjiang@huawei.com>
Acked-by: David Hildenbrand (Arm) <david@kernel.org>
Acked-by: Zi Yan <ziy@nvidia.com>
Reviewed-by: Xu Xin <xu.xin16@zte.com.cn>
Cc: Chengming Zhou <chengming.zhou@linux.dev>
Cc: Kefeng Wang <wangkefeng.wang@huawei.com>
Cc: Luiz Capitulino <luizcap@redhat.com>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Miaohe Lin <linmiaohe@huawei.com>
Cc: Nanyong Sun <sunnanyong@huawei.com>
Cc: Svetly Todorov <svetly.todorov@memverge.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
fs/proc/page.c

index f9b2c2c906cd7281132f55e3afb253fc58182f0a..7d938714343573b90e1ed78ed36a904e51088abc 100644 (file)
@@ -173,7 +173,7 @@ u64 stable_page_flags(const struct page *page)
                u |= 1 << KPF_MMAP;
        if (is_anon) {
                u |= 1 << KPF_ANON;
-               if (mapping & FOLIO_MAPPING_KSM)
+               if ((mapping & FOLIO_MAPPING_FLAGS) == FOLIO_MAPPING_KSM)
                        u |= 1 << KPF_KSM;
        }