All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH] x86/head_64.S: remove redundant check that kernel address is 2M aligned
@ 2016-01-22 18:13 Alexander Kuleshov
  2016-01-23  1:42 ` Brian Gerst
  0 siblings, 1 reply; 3+ messages in thread
From: Alexander Kuleshov @ 2016-01-22 18:13 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Ingo Molnar, H . Peter Anvin, Andy Lutomirski, Borislav Petkov,
	Denys Vlasenko, Andrey Ryabinin, x86, linux-kernel,
	Alexander Kuleshov

We check that the base address of the kernel is 2M aligned in
the arch/x86/kernel/head_65.S right after jump to the decompressed
kernel. But we already have a check in the decompress_kernel()
which validates that kernel location is MIN_KERNEL_ALIGN aligned
which is 2M too for x86_64.

Signed-off-by: Alexander Kuleshov <kuleshovmail@gmail.com>
---
 arch/x86/kernel/head_64.S | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S
index ffdc0e8..4967cba 100644
--- a/arch/x86/kernel/head_64.S
+++ b/arch/x86/kernel/head_64.S
@@ -75,12 +75,6 @@ startup_64:
 	leaq	_text(%rip), %rbp
 	subq	$_text - __START_KERNEL_map, %rbp
 
-	/* Is the address not 2M aligned? */
-	movq	%rbp, %rax
-	andl	$~PMD_PAGE_MASK, %eax
-	testl	%eax, %eax
-	jnz	bad_address
-
 	/*
 	 * Is the address too large?
 	 */
-- 
2.7.0.25.gfc10eb5

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [RFC PATCH] x86/head_64.S: remove redundant check that kernel address is 2M aligned
  2016-01-22 18:13 [RFC PATCH] x86/head_64.S: remove redundant check that kernel address is 2M aligned Alexander Kuleshov
@ 2016-01-23  1:42 ` Brian Gerst
  2016-01-23  6:37   ` Alexander Kuleshov
  0 siblings, 1 reply; 3+ messages in thread
From: Brian Gerst @ 2016-01-23  1:42 UTC (permalink / raw)
  To: Alexander Kuleshov
  Cc: Thomas Gleixner, Ingo Molnar, H . Peter Anvin, Andy Lutomirski,
	Borislav Petkov, Denys Vlasenko, Andrey Ryabinin,
	the arch/x86 maintainers, Linux Kernel Mailing List

On Fri, Jan 22, 2016 at 1:13 PM, Alexander Kuleshov
<kuleshovmail@gmail.com> wrote:
> We check that the base address of the kernel is 2M aligned in
> the arch/x86/kernel/head_65.S right after jump to the decompressed
> kernel. But we already have a check in the decompress_kernel()
> which validates that kernel location is MIN_KERNEL_ALIGN aligned
> which is 2M too for x86_64.
>
> Signed-off-by: Alexander Kuleshov <kuleshovmail@gmail.com>
> ---
>  arch/x86/kernel/head_64.S | 6 ------
>  1 file changed, 6 deletions(-)
>
> diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S
> index ffdc0e8..4967cba 100644
> --- a/arch/x86/kernel/head_64.S
> +++ b/arch/x86/kernel/head_64.S
> @@ -75,12 +75,6 @@ startup_64:
>         leaq    _text(%rip), %rbp
>         subq    $_text - __START_KERNEL_map, %rbp
>
> -       /* Is the address not 2M aligned? */
> -       movq    %rbp, %rax
> -       andl    $~PMD_PAGE_MASK, %eax
> -       testl   %eax, %eax
> -       jnz     bad_address
> -
>         /*
>          * Is the address too large?
>          */

I think we still need to do the check, in case we came from a 64-bit
bootloader that directly jumped to startup_64.  However, this check
can be simplified to:

    testl $~PMD_PAGE_MASK, %ebp
    jnz bad_address

--
Brian Gerst

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [RFC PATCH] x86/head_64.S: remove redundant check that kernel address is 2M aligned
  2016-01-23  1:42 ` Brian Gerst
@ 2016-01-23  6:37   ` Alexander Kuleshov
  0 siblings, 0 replies; 3+ messages in thread
From: Alexander Kuleshov @ 2016-01-23  6:37 UTC (permalink / raw)
  To: Brian Gerst
  Cc: Alexander Kuleshov, Thomas Gleixner, Ingo Molnar,
	H . Peter Anvin, Andy Lutomirski, Borislav Petkov,
	Denys Vlasenko, Andrey Ryabinin, the arch/x86 maintainers,
	Linux Kernel Mailing List

Hello Brian,

On 01-22-16, Brian Gerst wrote:
> >
> > -       /* Is the address not 2M aligned? */
> > -       movq    %rbp, %rax
> > -       andl    $~PMD_PAGE_MASK, %eax
> > -       testl   %eax, %eax
> > -       jnz     bad_address
> > -
> >         /*
> >          * Is the address too large?
> >          */
> 
> I think we still need to do the check, in case we came from a 64-bit
> bootloader that directly jumped to startup_64.  However, this check
> can be simplified to:
> 
>     testl $~PMD_PAGE_MASK, %ebp
>     jnz bad_address

Ah, ok, in this way we can't trust a bootloader. I just thought that
64-bit entry point is startup_64 from arch/x86/boot/compressed/head_64.S

Thank you.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-01-23  6:41 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-22 18:13 [RFC PATCH] x86/head_64.S: remove redundant check that kernel address is 2M aligned Alexander Kuleshov
2016-01-23  1:42 ` Brian Gerst
2016-01-23  6:37   ` Alexander Kuleshov

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.