[Crash-utility] [PATCH v5] arm64: fix kernel memory map handling for kaslr-enabled

Dave Anderson anderson at redhat.com
Tue Jun 14 14:08:25 UTC 2016



----- Original Message -----
> Dave,
> 
> On Mon, Jun 13, 2016 at 04:06:22PM -0400, Dave Anderson wrote:
> > 
> > 
> > ----- Original Message -----
> > > In my next version of kdump patch, the following VMCOREINFO will be
> > > added:
> > >     NUMBER(VA_BITS)
> > >     NUMBER(kimage_voffset)
> > >     NUMBER(PHYS_OFFSET)
> > >     KERNELOFFSET
> 
> Is "KERNELOFFSET" useful for arm64?
> As you said, this value is used as a trigger of KASLR_CHECK,
> but the current kernel doesn't have "randomize_modules".

Right, so AIUI, this crash-7.0.7 update is not valid for Linux 4.1 and later
kernels where "randomize_modules" was removed:

         - Linux 3.15 and later kernels configured with CONFIG_RANDOMIZE_BASE
           can be now be readily identified because of new kernel symbols that
           have been added.  For those kernels, the new "--kaslr=<offset>" 
           and/or "--kaslr=auto" options are not necessary for ELF or compressed
           kdump vmcores, or for live systems that have /proc/kallsyms showing
           the relocated symbol values.  A new KASLR initialization function
           called kaslr_init() is now called by symtab_init() prior to the 
           initial symbol-sorting operation.  If kaslr_init() determines that
           KASLR may be in effect, it will trigger a search for the relevant
           vmlinux symbols during the sorting operation, which in turn will
           cause the relocation value to be automatically calculated.
           (anderson at redhat.com)

So for those kernels, --kaslr would be required.  

But it appears that I can just change crash to look for "module_load_offset", 
which went into the kernel at the same time as "randomize_modules":

  +#ifdef CONFIG_RANDOMIZE_BASE
  +static unsigned long module_load_offset;
  +static int randomize_modules = 1;
  +

and still exists after it was removed from arch/x86/kernel/module.c:

  #ifdef CONFIG_RANDOMIZE_BASE
  static unsigned long module_load_offset;
  -static int randomize_modules = 1;

For arm64 in the crash utility, I see that you would never use KASLR_CHECK because 
(RELOC_AUTO|KASLR) gets set by default if NEW_VMEMMAP is set.    

Would it be useful for makedumpfile?  And while I understand you're dead set against
adding anything that could be considered superfluous, but since it does exist for x86_64,
it seems natural to include it for arm64. 

Dave
 



 
> Thanks,
> -Takahiro AKASHI
> 




More information about the Crash-utility mailing list