[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20240522074629.2420423-1-Sukrit.Bhatnagar@sony.com>
Date: Wed, 22 May 2024 16:46:27 +0900
From: Sukrit Bhatnagar <Sukrit.Bhatnagar@...y.com>
To: Petr Mladek <pmladek@...e.com>,
Steven Rostedt <rostedt@...dmis.org>,
Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
Rasmus Villemoes <linux@...musvillemoes.dk>,
Sergey Senozhatsky <senozhatsky@...omium.org>,
Jonathan Corbet <corbet@....net>,
Christoph Lameter <cl@...ux.com>,
Pekka Enberg <penberg@...nel.org>,
David Rientjes <rientjes@...gle.com>,
Joonsoo Kim <iamjoonsoo.kim@....com>,
Andrew Morton <akpm@...ux-foundation.org>,
Vlastimil Babka <vbabka@...e.cz>,
Roman Gushchin <roman.gushchin@...ux.dev>,
Hyeonggon Yoo <42.hyeyoo@...il.com>,
Masami Hiramatsu <mhiramat@...nel.org>,
Mathieu Desnoyers <mathieu.desnoyers@...icios.com>,
"Matthew Wilcox (Oracle)" <willy@...radead.org>
Cc: linux-doc@...r.kernel.org,
linux-kernel@...r.kernel.org,
linux-mm@...ck.org,
linux-trace-kernel@...r.kernel.org,
Sukrit.Bhatnagar@...y.com
Subject: [PATCH 0/2] Improve dump_page() output for slab pages
While using dump_page() on a range of pages, I noticed that there were some
PG_slab pages that were also showing as PG_anon pages, according to the
function output.
[ 7.071985] page: refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x102768
[ 7.072602] head: order:3 entire_mapcount:0 nr_pages_mapped:0 pincount:0
[ 7.073085] anon flags: 0x8000000000000840(slab|head|zone=2)
[ 7.073777] raw: 8000000000000840 ffff8881000419c0 0000000000000000 dead000000000001
It was also printing the "page_type" field for slab pages, but that was fixed in
a very recent commit:
8f790d0c7cfe (mm: improve dumping of mapcount and page_type)
Given that the slab pages cannot be mapped to userspace, this output seems
misleading.
In dump_page(), folio_test_anon() is used, which checks the "mapping" field.
But the struct slab was separated from struct page.
So accessing the mapping field through a struct page pointer, which actually
points to a struct slab, will result in garbage memory access and the PG_anon
test can return true.
It seems that other parts of the kernel MM make the check for slab before
checking for anon, but dump_page() is not doing that.
On the other hand, the struct slab has kmem_cache which maintains another set
of flags. It would be nice to have these flags added as a part of the debug
output, and to have a convenient way to print them.
(The long chain of pointer dereferences for cache flags looks messy, but I
assume it should be fine for a debug function.)
Sukrit Bhatnagar (2):
mm: printk: introduce new format %pGs for slab flags
mm: debug: print correct information for slab folios
Documentation/core-api/printk-formats.rst | 2 +
include/linux/slab.h | 5 ++
include/trace/events/mmflags.h | 67 +++++++++++++++++++++++
lib/test_printf.c | 13 +++++
lib/vsprintf.c | 22 ++++++++
mm/debug.c | 12 +++-
mm/internal.h | 1 +
7 files changed, 121 insertions(+), 1 deletion(-)
--
2.34.1
Powered by blists - more mailing lists