The offset of the field 'init_uts_ns.name' has changed since commit 9a56493f6942 ("uts: Use generic ns_common::count"). Link: https://lore.kernel.org/r/159644978167.604812.1773586504374412107.stgit@localhost.localdomain Read the offset from VMCOREINFO if present. This requires a linux version which exports the requisite offset in VMCOREINFO. Signed-off-by: Alexander Egorenkov <egorenar@xxxxxxxxxxxxx> --- v1 -> v2: * Use offset from VMCOREINFO * Initialize corresponding entry in offset_table defs.h | 1 + kernel.c | 15 ++++++++++----- symbols.c | 3 +++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/defs.h b/defs.h index c899fe2..9a8030a 100644 --- a/defs.h +++ b/defs.h @@ -2104,6 +2104,7 @@ struct offset_table { /* stash of commonly-used offsets */ long inode_i_sb_list; long irq_common_data_affinity; long irq_desc_irq_common_data; + long uts_namespace_name; }; struct size_table { /* stash of commonly-used sizes */ diff --git a/kernel.c b/kernel.c index 5ae8cf1..9871637 100644 --- a/kernel.c +++ b/kernel.c @@ -230,16 +230,21 @@ kernel_init() fprintf(fp, "%s\n\n", ctime_tz(&kt->date.tv_sec)); clean_exit(0); } - + + MEMBER_OFFSET_INIT(uts_namespace_name, "uts_namespace", "name"); if (symbol_exists("system_utsname")) readmem(symbol_value("system_utsname"), KVADDR, &kt->utsname, sizeof(struct new_utsname), "system_utsname", RETURN_ON_ERROR); - else if (symbol_exists("init_uts_ns")) - readmem(symbol_value("init_uts_ns") + sizeof(int), - KVADDR, &kt->utsname, sizeof(struct new_utsname), + else if (symbol_exists("init_uts_ns")) { + long offset = sizeof(int); + if (VALID_MEMBER(uts_namespace_name)) + offset = OFFSET(uts_namespace_name); + + readmem(symbol_value("init_uts_ns") + offset, + KVADDR, &kt->utsname, sizeof(struct new_utsname), "init_uts_ns", RETURN_ON_ERROR); - else + } else error(INFO, "cannot access utsname information\n\n"); if (CRASHDEBUG(1)) { diff --git a/symbols.c b/symbols.c index d22fb1d..3dd5fa1 100644 --- a/symbols.c +++ b/symbols.c @@ -10585,6 +10585,9 @@ dump_offset_table(char *spec, ulong makestruct) fprintf(fp, " xa_node_shift: %ld\n", OFFSET(xa_node_shift)); + fprintf(fp, " uts_namespace_name: %ld\n", + OFFSET(uts_namespace_name)); + fprintf(fp, "\n size_table:\n"); fprintf(fp, " page: %ld\n", SIZE(page)); fprintf(fp, " page_flags: %ld\n", SIZE(page_flags)); -- 2.26.2 -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility