|
 |
412566 |
From 86446eaba408807e00cf2310d5748aa6b7511284 Mon Sep 17 00:00:00 2001
|
|
 |
412566 |
From: Kazuhito Hagio <k-hagio-ab@nec.com>
|
|
 |
412566 |
Date: Wed, 2 Feb 2022 02:14:56 +0000
|
|
 |
412566 |
Subject: [PATCH 11/11] Fix for "kmem -s|-S" and "bt -F[F]" on Linux 5.17-rc1
|
|
 |
412566 |
|
|
 |
412566 |
Since the following kernel commits split slab info from struct page
|
|
 |
412566 |
into struct slab, crash cannot get several slab related offsets from
|
|
 |
412566 |
struct page.
|
|
 |
412566 |
|
|
 |
412566 |
d122019bf061 ("mm: Split slab into its own type")
|
|
 |
412566 |
07f910f9b729 ("mm: Remove slab from struct page")
|
|
 |
412566 |
|
|
 |
412566 |
Without the patch, "kmem -s|-S" and "bt -F[F]" options cannot work
|
|
 |
412566 |
correctly with the following errors:
|
|
 |
412566 |
|
|
 |
412566 |
crash> kmem -s kmem_cache
|
|
 |
412566 |
CACHE OBJSIZE ALLOCATED TOTAL SLABS SSIZE NAME
|
|
 |
412566 |
kmem: page_to_nid: invalid page: ffff9454afc35020
|
|
 |
412566 |
kmem: kmem_cache: cannot gather relevant slab data
|
|
 |
412566 |
ffff945140042000 216 ? ? ? 8k kmem_cache
|
|
 |
412566 |
|
|
 |
412566 |
crash> bt -F
|
|
 |
412566 |
...
|
|
 |
412566 |
bt: invalid structure member offset: page_slab
|
|
 |
412566 |
FILE: memory.c LINE: 9477 FUNCTION: vaddr_to_kmem_cache()
|
|
 |
412566 |
|
|
 |
412566 |
Signed-by: Kazuhito Hagio <k-hagio-ab@nec.com>
|
|
 |
412566 |
Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
|
|
 |
412566 |
---
|
|
 |
412566 |
memory.c | 13 +++++++++++++
|
|
 |
412566 |
1 file changed, 13 insertions(+)
|
|
 |
412566 |
|
|
 |
412566 |
diff --git a/memory.c b/memory.c
|
|
 |
412566 |
index e80c59ea4534..8448ddc3a16c 100644
|
|
 |
412566 |
--- a/memory.c
|
|
 |
412566 |
+++ b/memory.c
|
|
 |
412566 |
@@ -421,6 +421,8 @@ vm_init(void)
|
|
 |
412566 |
MEMBER_OFFSET_INIT(page_prev, "page", "prev");
|
|
 |
412566 |
if (INVALID_MEMBER(page_next))
|
|
 |
412566 |
ANON_MEMBER_OFFSET_INIT(page_next, "page", "next");
|
|
 |
412566 |
+ if (INVALID_MEMBER(page_next))
|
|
 |
412566 |
+ MEMBER_OFFSET_INIT(page_next, "slab", "next");
|
|
 |
412566 |
|
|
 |
412566 |
MEMBER_OFFSET_INIT(page_list, "page", "list");
|
|
 |
412566 |
if (VALID_MEMBER(page_list)) {
|
|
 |
412566 |
@@ -747,11 +749,15 @@ vm_init(void)
|
|
 |
412566 |
MEMBER_OFFSET_INIT(kmem_cache_random, "kmem_cache", "random");
|
|
 |
412566 |
MEMBER_OFFSET_INIT(kmem_cache_cpu_freelist, "kmem_cache_cpu", "freelist");
|
|
 |
412566 |
MEMBER_OFFSET_INIT(kmem_cache_cpu_page, "kmem_cache_cpu", "page");
|
|
 |
412566 |
+ if (INVALID_MEMBER(kmem_cache_cpu_page))
|
|
 |
412566 |
+ MEMBER_OFFSET_INIT(kmem_cache_cpu_page, "kmem_cache_cpu", "slab");
|
|
 |
412566 |
MEMBER_OFFSET_INIT(kmem_cache_cpu_node, "kmem_cache_cpu", "node");
|
|
 |
412566 |
MEMBER_OFFSET_INIT(kmem_cache_cpu_partial, "kmem_cache_cpu", "partial");
|
|
 |
412566 |
MEMBER_OFFSET_INIT(page_inuse, "page", "inuse");
|
|
 |
412566 |
if (INVALID_MEMBER(page_inuse))
|
|
 |
412566 |
ANON_MEMBER_OFFSET_INIT(page_inuse, "page", "inuse");
|
|
 |
412566 |
+ if (INVALID_MEMBER(page_inuse))
|
|
 |
412566 |
+ MEMBER_OFFSET_INIT(page_inuse, "slab", "inuse");
|
|
 |
412566 |
MEMBER_OFFSET_INIT(page_offset, "page", "offset");
|
|
 |
412566 |
if (INVALID_MEMBER(page_offset))
|
|
 |
412566 |
ANON_MEMBER_OFFSET_INIT(page_offset, "page", "offset");
|
|
 |
412566 |
@@ -763,6 +769,9 @@ vm_init(void)
|
|
 |
412566 |
if (INVALID_MEMBER(page_slab))
|
|
 |
412566 |
ANON_MEMBER_OFFSET_INIT(page_slab, "page", "slab_cache");
|
|
 |
412566 |
}
|
|
 |
412566 |
+ if (INVALID_MEMBER(page_slab))
|
|
 |
412566 |
+ MEMBER_OFFSET_INIT(page_slab, "slab", "slab_cache");
|
|
 |
412566 |
+
|
|
 |
412566 |
MEMBER_OFFSET_INIT(page_slab_page, "page", "slab_page");
|
|
 |
412566 |
if (INVALID_MEMBER(page_slab_page))
|
|
 |
412566 |
ANON_MEMBER_OFFSET_INIT(page_slab_page, "page", "slab_page");
|
|
 |
412566 |
@@ -772,10 +781,14 @@ vm_init(void)
|
|
 |
412566 |
MEMBER_OFFSET_INIT(page_freelist, "page", "freelist");
|
|
 |
412566 |
if (INVALID_MEMBER(page_freelist))
|
|
 |
412566 |
ANON_MEMBER_OFFSET_INIT(page_freelist, "page", "freelist");
|
|
 |
412566 |
+ if (INVALID_MEMBER(page_freelist))
|
|
 |
412566 |
+ MEMBER_OFFSET_INIT(page_freelist, "slab", "freelist");
|
|
 |
412566 |
if (INVALID_MEMBER(kmem_cache_objects)) {
|
|
 |
412566 |
MEMBER_OFFSET_INIT(kmem_cache_oo, "kmem_cache", "oo");
|
|
 |
412566 |
/* NOTE: returns offset of containing bitfield */
|
|
 |
412566 |
ANON_MEMBER_OFFSET_INIT(page_objects, "page", "objects");
|
|
 |
412566 |
+ if (INVALID_MEMBER(page_objects))
|
|
 |
412566 |
+ ANON_MEMBER_OFFSET_INIT(page_objects, "slab", "objects");
|
|
 |
412566 |
}
|
|
 |
412566 |
if (VALID_MEMBER(kmem_cache_node)) {
|
|
 |
412566 |
ARRAY_LENGTH_INIT(len, NULL, "kmem_cache.node", NULL, 0);
|
|
 |
412566 |
--
|
|
 |
412566 |
2.20.1
|
|
 |
412566 |
|