From 14f8c460473c8613553b5defd174ca2af812ddcb Mon Sep 17 00:00:00 2001 From: Alexander Egorenkov Date: Mon, 6 Dec 2021 16:04:19 +0100 Subject: [PATCH 04/10] memory: Handle struct slab changes on Linux 5.17-rc1 and later Since kernel commit d122019bf061 ("mm: Split slab into its own type"), the struct slab is used for both SLAB and SLUB. Therefore, don't depend on the non-presence of the struct slab to decide whether SLAB implementation should be chosen and use the member variable "cpu_slab" of the struct kmem_cache instead, it should be present only in SLUB. Without the patch, crash fails to start with the error message: crash: invalid structure member offset: kmem_cache_s_num FILE: memory.c LINE: 9619 FUNCTION: kmem_cache_init() Signed-off-by: Alexander Egorenkov --- memory.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/memory.c b/memory.c index 86c02c132890..5af45fd7d834 100644 --- a/memory.c +++ b/memory.c @@ -576,7 +576,8 @@ vm_init(void) STRUCT_SIZE_INIT(cpucache_s, "cpucache_s"); } else if (!VALID_STRUCT(kmem_slab_s) && - !VALID_STRUCT(slab_s) && + !VALID_STRUCT(slab_s) && + !MEMBER_EXISTS("kmem_cache", "cpu_slab") && (VALID_STRUCT(slab) || (vt->flags & SLAB_OVERLOAD_PAGE))) { vt->flags |= PERCPU_KMALLOC_V2; -- 2.20.1