在 2020年10月02日 00:00, crash-utility-requ...@redhat.com 写道:
> Message: 2
> Date: Thu,  1 Oct 2020 15:19:59 +0200
> From: Alexander Egorenkov <egore...@linux.ibm.com>
> To: crash-utility@redhat.com, k-hagio...@nec.com
> Subject: [Crash-utility] [PATCH v2 1/1] Support member offset
>       uts_namespace.name
> Message-ID: <20201001131959.456735-1-egore...@linux.ibm.com>
> 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 <egore...@linux.ibm.com>
> ---
> 
> v1 -> v2:
>  * Use offset from VMCOREINFO
>  * Initialize corresponding entry in offset_table
> For the v2:
Acked-by: Lianbo Jiang <liji...@redhat.com>

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@redhat.com
https://www.redhat.com/mailman/listinfo/crash-utility

Reply via email to