Re: [PATCH 0/1] Add --kaslr support for s390x

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

 



Hello Mikhail, Philipp and Gerald,

For the first time today I'm testing a 5.2.0-0.rc1 kernel that has 
been configured with CONFIG_RANDOMIZE_BASE=y, and I have verified 
that it runs live using the KERNELOFFSET value from the /proc/kcore
VMCOREINFO as the --kalsr argument.  

For live system analysis, it seems that the existing kaslr 
code in symbols.c should be able to calculate the offset
by comparing the _stext values from /proc/kallsyms and the
the vmlinux file.  But obviously it doesn't, although I
haven't investigate why not.

Also, I can't create a kdump dumpfile, so I can't test that, 
so it's not clear whether the initial patchset also requires 
the -kaslr argument for vmcores?

Anyway, are you guys planning to post a follow-on patch to make
things work automagically both live and with kdumps?

Thanks,
  Dave


  

----- Original Message -----
>   
> Add --kaslr support for s390x kernels configured with
> CONFIG_RANDOMIZE_BASE. Only kdumps or ELF dumps with
> vmcoreinfo are supported.
> 
> Suggested-by: Gerald Schaefer <gerald schaefer de ibm com>
> Signed-off-by: Mikhail Zaslonko <zaslonko linux ibm com>
> ---
>  help.c    | 2 +-
>  main.c    | 3 ++-
>  symbols.c | 9 +++++----
>  3 files changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/help.c b/help.c
> index ba15dec..47058ed 100644
> --- a/help.c
> +++ b/help.c
> @@ -335,7 +335,7 @@ char *program_usage_info[] = {
>      "    and verification.  The default count is 32768.",
>      "",
>      "  --kaslr offset | auto",
> -    "    If an x86 or x86_64 kernel was configured with CONFIG_RANDOMIZE_BASE,",
> +    "    If x86, x86_64 or s390x kernel was configured with CONFIG_RANDOMIZE_BASE,",
>      "    the offset value is equal to the difference between the symbol values ",
>      "    compiled into the vmlinux file and their relocated KASLR value.  If", 
>      "    set to auto, the KASLR offset value will be automatically calculated.",
> diff --git a/main.c b/main.c
> index cd282cd..83ccd31 100644
> --- a/main.c
> +++ b/main.c
> @@ -227,7 +227,8 @@ main(int argc, char **argv)
>  				}
>  			} else if (STREQ(long_options[option_index].name, "kaslr")) {
>  				if (!machine_type("X86_64") &&
> -				    !machine_type("ARM64") && !machine_type("X86"))
> +				    !machine_type("ARM64") && !machine_type("X86") &&
> +				    !machine_type("S390X"))
>  					error(INFO, "--kaslr not valid "
>  						"with this machine type.\n");
>  				else if (STREQ(optarg, "auto"))
> diff --git a/symbols.c b/symbols.c
> index 77f45f9..1ed75fe 100644
> --- a/symbols.c
> +++ b/symbols.c
> @@ -593,8 +593,8 @@ kaslr_init(void)
>  {
>  	char *string;
>  
> -	if ((!machine_type("X86_64") && !machine_type("ARM64") && !machine_type("X86")) ||
> -	    (kt->flags & RELOC_SET))
> +	if ((!machine_type("X86_64") && !machine_type("ARM64") && !machine_type("X86") &&
> +	    !machine_type("S390X")) || (kt->flags & RELOC_SET))
>  		return;
>  
>  	/*
> @@ -751,7 +751,8 @@ store_symbols(bfd *abfd, int dynamic, void *minisyms, long symcount,
>  					fromend, size, store);
>  		} else if (!(kt->flags & RELOC_SET))
>  			kt->flags |= RELOC_FORCE;
> -	} else if (machine_type("X86_64") || machine_type("ARM64")) {
> +	} else if (machine_type("X86_64") || machine_type("ARM64") ||
> +		   machine_type("S390X")) {
>  		if ((kt->flags2 & RELOC_AUTO) && !(kt->flags & RELOC_SET))
>  			derive_kaslr_offset(abfd, dynamic, from,
>  				fromend, size, store);
> @@ -823,7 +824,7 @@ store_sysmap_symbols(void)
>                          strerror(errno));
>  
>  	if (!machine_type("X86") && !machine_type("X86_64") &&
> -	    !machine_type("ARM64"))
> +	    !machine_type("ARM64") && !machine_type("S390X"))
>  		kt->flags &= ~RELOC_SET;
>  
>  	first = 0;
> -- 
> 2.16.4
> 
> 

--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/crash-utility



[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux