RE: [PATCH v2 1/1] Calculate offset to field 'init_uts_ns.name'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <egorenar@xxxxxxxxxxxxx>
> ---
>  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
> kexec@xxxxxxxxxxxxxxxxxxx
> http://lists.infradead.org/mailman/listinfo/kexec

_______________________________________________
kexec mailing list
kexec@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/kexec



[Index of Archives]     [LM Sensors]     [Linux Sound]     [ALSA Users]     [ALSA Devel]     [Linux Audio Users]     [Linux Media]     [Kernel]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux