All of lore.kernel.org
 help / color / mirror / Atom feed
From: Baoquan He <bhe@redhat.com>
To: Kees Cook <keescook@chromium.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
	"x86@kernel.org" <x86@kernel.org>,
	Matt Fleming <matt@codeblueprint.co.uk>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@kernel.org>, "H. Peter Anvin" <hpa@zytor.com>,
	izumi.taku@jp.fujitsu.com, fanc.fnst@cn.fujitsu.com,
	Thomas Garnier <thgarnie@google.com>
Subject: Re: [PATCH v4 4/4] x86/boot/KASLR: Restrict kernel to be randomized in mirror regions
Date: Mon, 10 Jul 2017 09:47:29 +0800	[thread overview]
Message-ID: <20170710014729.GC13560@x1> (raw)
In-Reply-To: <CAGXu5jJApKfJ8u60b6swbHiEVFGMNS1tA2eCEYqEYJ_3cX2f=g@mail.gmail.com>

On 07/09/17 at 07:11am, Kees Cook wrote:
> On Sun, Jul 9, 2017 at 5:37 AM, Baoquan He <bhe@redhat.com> wrote:
> > Signed-off-by: Baoquan He <bhe@redhat.com>
> > +/* Marks if efi mirror regions have been found and handled. */
> > +static bool efi_mirror_found;
> 
> I think this is only ever checked once? How about having
> process_efi_entries return bool to indicate if mirror was found? Also,
> that function should be behind #ifdef. Let's do something like this:
> 
> 
> > +
> > +static void process_efi_entries(unsigned long minimum,
> > +                               unsigned long image_size)
> 
> #ifdef CONFIG_EFI
> /* Returns true if mirror region found (and further scanning should stop) */

Well, here it might be not like that. The mirror regions could be multiple,
we need find and process each of them to add slots. 

> static bool process_efi_entries(...)
> {
> ...
> }
> #else
> static inline bool process_efi_entries(...)
> {
>     return false;
> }
> #endif
> 
> Then:
> 
> > +#ifdef CONFIG_EFI
> > +       process_efi_entries(minimum, image_size);
> > +       if (efi_mirror_found)
> > +               return slots_fetch_random();
> > +#endif
> 
> Can become:
> 
> if (process_efi_entries(minimum, image_size))
>     return slots_fetch_random()
> 
> and no #ifndef needed here.
> 
> > +
> >         process_e820_entries(minimum, image_size);
> >         return slots_fetch_random();
> >  }
> > @@ -652,7 +708,7 @@ void choose_random_location(unsigned long input,
> >          */
> >         min_addr = min(*output, 512UL << 20);
> >
> > -       /* Walk e820 and find a random address. */
> > +       /* Walk available memory entries to find a random address. */
> >         random_addr = find_random_phys_addr(min_addr, output_size);
> >         if (!random_addr) {
> >                 warn("Physical KASLR disabled: no suitable memory region!");
> > --
> > 2.5.5
> >
> 
> Otherwise, if the EFI logic is good, this looks sensible.
> 
> Thanks for splitting up the patches!
> 
> -Kees
> 
> -- 
> Kees Cook
> Pixel Security

  parent reply	other threads:[~2017-07-10  1:47 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-09 12:37 [PATCH v4 0/4] x86/boot/KASLR: Restrict kernel to be randomized in mirror regions Baoquan He
2017-07-09 12:37 ` [PATCH v4 1/4] x86/boot/KASLR: Wrap e820 entries walking code into new function process_e820_entries() Baoquan He
2017-07-09 14:00   ` Kees Cook
2017-07-18 10:45   ` [tip:x86/boot] " tip-bot for Baoquan He
2017-07-09 12:37 ` [PATCH v4 2/4] x86/boot/KASLR: Switch to pass struct mem_vector to process_e820_entry() Baoquan He
2017-07-09 14:02   ` Kees Cook
2017-07-18 10:45   ` [tip:x86/boot] " tip-bot for Baoquan He
2017-07-09 12:37 ` [PATCH v4 3/4] x86/boot/KASLR: Rename process_e820_entry() into process_mem_region() Baoquan He
2017-07-09 14:02   ` Kees Cook
2017-07-18 10:45   ` [tip:x86/boot] " tip-bot for Baoquan He
2017-07-09 12:37 ` [PATCH v4 4/4] x86/boot/KASLR: Restrict kernel to be randomized in mirror regions Baoquan He
2017-07-09 14:11   ` Kees Cook
2017-07-09 14:28     ` Baoquan He
2017-07-10  1:47     ` Baoquan He [this message]
2017-07-10  2:48       ` Chao Fan
2017-07-10  7:50     ` Baoquan He

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=20170710014729.GC13560@x1 \
    --to=bhe@redhat.com \
    --cc=fanc.fnst@cn.fujitsu.com \
    --cc=hpa@zytor.com \
    --cc=izumi.taku@jp.fujitsu.com \
    --cc=keescook@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=matt@codeblueprint.co.uk \
    --cc=mingo@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=thgarnie@google.com \
    --cc=x86@kernel.org \
    /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.