On Fri, Jan 6, 2023 at 7:58 AM HAGIO KAZUHITO(萩尾 一仁) <k-hagio-ab(a)nec.com>
wrote:
 Kernel commit e36ce448a08d ("mm/slab: use kmalloc_node() for off
slab
 freelist_idx_t array allocation"), which is contained in Linux 6.1 and
 later kernels, removed kmem_cache.freelist_cache member.
 Without the patch, crash does not set SLAB_OVERLOAD_PAGE and
 "kmem -s|-S" options fail with the following error:
   kmem: invalid structure member offset: slab_list
         FILE: memory.c  LINE: 12156  FUNCTION: verify_slab_v2()
 Use kmem_cache.freelist_size instead, which was instroduced together
 with kmem_cache.freelist_cache by kernel commit 8456a648cf44.
 
These two patches look good to me. For them:
[1] [PATCH 1/2] SLAB: Fix for "kmem -s|-S" options on Linux 6.1 and later
[2] [PATCH 2/2] SLAB: Fix for "kmem -s|-S" options on Linux 6.2-rc1 and
later
Ack.
Thanks.
Lianbo
 Signed-off-by: Kazuhito Hagio <k-hagio-ab(a)nec.com>
 ---
  memory.c | 5 ++++-
  1 file changed, 4 insertions(+), 1 deletion(-)
 diff --git a/memory.c b/memory.c
 index 625a94b7d7d4..71ded688206f 100644
 --- a/memory.c
 +++ b/memory.c
 @@ -535,8 +535,11 @@ vm_init(void)
         /*
          * slab: overload struct slab over struct page
           * 
https://lkml.org/lkml/2013/10/16/155
 +        *
 +        * commit e36ce448a08d removed kmem_cache.freelist_cache in 6.1,
 +        * so use freelist_size instead.
          */
 -       if (MEMBER_EXISTS("kmem_cache", "freelist_cache")) {
 +       if (MEMBER_EXISTS("kmem_cache", "freelist_size")) {
                 vt->flags |= SLAB_OVERLOAD_PAGE;
                 ANON_MEMBER_OFFSET_INIT(page_s_mem, "page",
"s_mem");
                 ANON_MEMBER_OFFSET_INIT(page_freelist, "page",
"freelist");
 --
 2.31.1