Hi Alexander,

-----Original Message-----
> The offset has changed in linux-next (v5.9.0) from 4 to 0 because
> there is no more 'kref' member variable at the beginning of 'init_uts_ns'.
> The change was introduced with commit 
> 9a56493f6942c0e2df1579986128721da96e00d8.
> To handle both cases correctly, calculate the offset at run time instead.

Thank you for catching this and the patch.

but do you know the kernel patch corresponding to this patch, i.e. adds
the OFFSET(init_uts_ns.name) (strictly, OFFSET(uts_namespace.name) probably)
entry to vmcoreinfo?  The makedumpfile usually just read it from vmcore,
so cannot calculate without debug info in vmlinux.

If it has not been posted yet, we need to do.  The best situation is
that the patch is merged into linux-next first and then merged into
mainline together with the commit 9a56493f6942.

Is it possible for you?  otherwise, anyone or I might try.

Thanks,
Kazu

> 
> Signed-off-by: Alexander Egorenkov <[email protected]>
> ---
>  makedumpfile.c | 8 ++++++--
>  makedumpfile.h | 4 ++++
>  2 files changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/makedumpfile.c b/makedumpfile.c
> index 4c4251e..2d62db8 100644
> --- a/makedumpfile.c
> +++ b/makedumpfile.c
> @@ -1159,7 +1159,7 @@ check_release(void)
>       if (SYMBOL(system_utsname) != NOT_FOUND_SYMBOL) {
>               utsname = SYMBOL(system_utsname);
>       } else if (SYMBOL(init_uts_ns) != NOT_FOUND_SYMBOL) {
> -             utsname = SYMBOL(init_uts_ns) + sizeof(int);
> +             utsname = SYMBOL(init_uts_ns) + OFFSET(init_uts_ns.name);
>       } else {
>               ERRMSG("Can't get the symbol of system_utsname.\n");
>               return FALSE;
> @@ -2077,7 +2077,7 @@ get_str_osrelease_from_vmlinux(void)
>       if (SYMBOL(system_utsname) != NOT_FOUND_SYMBOL) {
>               utsname = SYMBOL(system_utsname);
>       } else if (SYMBOL(init_uts_ns) != NOT_FOUND_SYMBOL) {
> -             utsname = SYMBOL(init_uts_ns) + sizeof(int);
> +             utsname = SYMBOL(init_uts_ns) + OFFSET(init_uts_ns.name);
>       } else {
>               ERRMSG("Can't get the symbol of system_utsname.\n");
>               return FALSE;
> @@ -2285,6 +2285,8 @@ write_vmcoreinfo_data(void)
>       WRITE_MEMBER_OFFSET("mmu_psize_def.shift", mmu_psize_def.shift);
>       WRITE_MEMBER_OFFSET("cpu_spec.mmu_features", cpu_spec.mmu_features);
> 
> +     WRITE_MEMBER_OFFSET("init_uts_ns.name", init_uts_ns.name);
> +
>       if (SYMBOL(node_data) != NOT_FOUND_SYMBOL)
>               WRITE_ARRAY_LENGTH("node_data", node_data);
>       if (SYMBOL(pgdat_list) != NOT_FOUND_SYMBOL)
> @@ -2697,6 +2699,8 @@ read_vmcoreinfo(void)
>               READ_MEMBER_OFFSET("log.text_len", printk_log.text_len);
>       }
> 
> +     READ_MEMBER_OFFSET("init_uts_ns.name", init_uts_ns.name);
> +
>       READ_ARRAY_LENGTH("node_data", node_data);
>       READ_ARRAY_LENGTH("pgdat_list", pgdat_list);
>       READ_ARRAY_LENGTH("mem_section", mem_section);
> diff --git a/makedumpfile.h b/makedumpfile.h
> index 03fb4ce..7d8c54d 100644
> --- a/makedumpfile.h
> +++ b/makedumpfile.h
> @@ -1880,6 +1880,10 @@ struct offset_table {
>       struct cpu_spec_s {
>               long    mmu_features;
>       } cpu_spec;
> +
> +     struct init_uts_ns_s {
> +             long    name;
> +     } init_uts_ns;
>  };
> 
>  /*
> --
> 2.26.2
> 
> 
> _______________________________________________
> kexec mailing list
> [email protected]
> http://lists.infradead.org/mailman/listinfo/kexec

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

Reply via email to