All of lore.kernel.org
 help / color / mirror / Atom feed
From: Baoquan He <bhe@redhat.com>
To: Dave Young <dyoung@redhat.com>
Cc: horms@verge.net.au, kexec@lists.infradead.org, piliu@redhat.com
Subject: Re: [PATCH] Only search page_offset_base when KASLR mm code is compiled in
Date: Thu, 2 Mar 2017 17:36:50 +0800	[thread overview]
Message-ID: <20170302093650.GD18391@x1> (raw)
In-Reply-To: <20170228060625.GA4872@dhcp-128-65.nay.redhat.com>

On 02/28/17 at 02:06pm, Dave Young wrote:
> On 02/24/17 at 06:38pm, Baoquan He wrote:
> > Otherwise it will print false positve message as below. So add
> > a check when do the search.
> > 
> >     "Cannot get kernel page_offset_base symbol address"
> > 
> > Signed-off-by: Baoquan He <bhe@redhat.com>
> > ---
> >  kexec/arch/i386/crashdump-x86.c | 6 ++++--
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> > 
> > diff --git a/kexec/arch/i386/crashdump-x86.c b/kexec/arch/i386/crashdump-x86.c
> > index 88aeee3..b2c1be5 100644
> > --- a/kexec/arch/i386/crashdump-x86.c
> > +++ b/kexec/arch/i386/crashdump-x86.c
> > @@ -150,8 +150,6 @@ static int get_kernel_vaddr_and_size(struct kexec_info *UNUSED(info),
> >  	off_t size;
> >  	uint32_t elf_flags = 0;
> >  	uint64_t stext_sym;
> > -	const unsigned long long pud_mask = ~((1 << 30) - 1);
> > -	unsigned long long vaddr, lowest_vaddr = 0;
> >  
> >  	if (elf_info->machine != EM_X86_64)
> >  		return 0;
> > @@ -181,8 +179,11 @@ static int get_kernel_vaddr_and_size(struct kexec_info *UNUSED(info),
> >  
> >  	end_phdr = &ehdr.e_phdr[ehdr.e_phnum];
> >  
> > +#ifdef CONFIG_RANDOMIZE_MEMORY
> 
> It does not work in userspace code.

Could be it only works when make header and install. Otherwise it can't
be seen by user space. I built a rhel kernel package and test passed.

Anyway, since it doesn't work in all cases, I have made another way to
fix it, just take out the error message and put it where get_kernel_sym
is called.

> 
> Maybe mute the error message or move it to kexec --debug is more
> reasonable..
> 
> >  	/* Search for the real PAGE_OFFSET when KASLR memory randomization
> >  	 * is enabled */
> > +	const unsigned long long pud_mask = ~((1 << 30) - 1);
> > +	unsigned long long vaddr, lowest_vaddr = 0;
> >  	if (get_kernel_sym("page_offset_base") != 0) {
> >  		for(phdr = ehdr.e_phdr; phdr != end_phdr; phdr++) {
> >  			if (phdr->p_type == PT_LOAD) {
> > @@ -194,6 +195,7 @@ static int get_kernel_vaddr_and_size(struct kexec_info *UNUSED(info),
> >  		if (lowest_vaddr != 0)
> >  			elf_info->page_offset = lowest_vaddr;
> >  	}
> > +#endif
> >  
> >  	/* Traverse through the Elf headers and find the region where
> >  	 * _stext symbol is located in. That's where kernel is mapped */
> > -- 
> > 2.5.5
> > 
> > 
> > _______________________________________________
> > kexec mailing list
> > kexec@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/kexec
> 
> Thanks
> Dave
> 
> _______________________________________________
> kexec mailing list
> kexec@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec

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

      reply	other threads:[~2017-03-02  9:37 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-24 10:38 [PATCH] Only search page_offset_base when KASLR mm code is compiled in Baoquan He
2017-02-28  6:06 ` Dave Young
2017-03-02  9:36   ` Baoquan He [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170302093650.GD18391@x1 \
    --to=bhe@redhat.com \
    --cc=dyoung@redhat.com \
    --cc=horms@verge.net.au \
    --cc=kexec@lists.infradead.org \
    --cc=piliu@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.