在 2020年10月02日 00:00, crash-utility-request@xxxxxxxxxx 写道: > Message: 2 > Date: Thu, 1 Oct 2020 15:19:59 +0200 > From: Alexander Egorenkov <egorenar@xxxxxxxxxxxxx> > To: crash-utility@xxxxxxxxxx, k-hagio-ab@xxxxxxx > Subject: [PATCH v2 1/1] Support member offset > uts_namespace.name > Message-ID: <20201001131959.456735-1-egorenar@xxxxxxxxxxxxx> > Content-Type: text/plain; charset="US-ASCII" > > 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 > For the v2: Acked-by: Lianbo Jiang <lijiang@xxxxxxxxxx> Thanks. > 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