From: ard.biesheuvel@linaro.org (Ard Biesheuvel)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/3] arm64: don't map TEXT_OFFSET bytes below the kernel if we can avoid it
Date: Wed, 2 Mar 2016 18:11:50 +0100 [thread overview]
Message-ID: <1456938712-11089-2-git-send-email-ard.biesheuvel@linaro.org> (raw)
In-Reply-To: <1456938712-11089-1-git-send-email-ard.biesheuvel@linaro.org>
For historical reasons, there is a 512 KB hole called TEXT_OFFSET below
the kernel image in memory. Since this hole is part of the kernel footprint
in the early mapping when running with 4 KB pages, we cannot avoid mapping
it, but in other cases, e.g., when running with larger page sizes, or in
the future, with more granular KASLR, there is no reason to map it explicitly
like we do currently.
So update the logic so that the hole is mapped only if it occurs as a result
of rounding the start address of the kernel to swapper block size, and leave
it unmapped otherwise.
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
arch/arm64/kernel/head.S | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S
index 50c2134a4aaf..1d4ae36db0bb 100644
--- a/arch/arm64/kernel/head.S
+++ b/arch/arm64/kernel/head.S
@@ -393,12 +393,12 @@ __create_page_tables:
* Map the kernel image (starting with PHYS_OFFSET).
*/
mov x0, x26 // swapper_pg_dir
- ldr x5, =KIMAGE_VADDR
+ ldr x5, =KIMAGE_VADDR + TEXT_OFFSET // compile time virt addr of _text
add x5, x5, x23 // add KASLR displacement
create_pgd_entry x0, x5, x3, x6
ldr w6, kernel_img_size
add x6, x6, x5
- mov x3, x24 // phys offset
+ adrp x3, KERNEL_START // runtime phys addr of _text
create_block_map x0, x7, x3, x5, x6
/*
@@ -415,7 +415,7 @@ __create_page_tables:
ENDPROC(__create_page_tables)
kernel_img_size:
- .long _end - (_head - TEXT_OFFSET)
+ .long _end - _head
.ltorg
/*
--
2.5.0
next prev parent reply other threads:[~2016-03-02 17:11 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-02 17:11 [PATCH 0/3] arm64: more granular KASLR Ard Biesheuvel
2016-03-02 17:11 ` Ard Biesheuvel [this message]
2016-03-02 17:11 ` [PATCH 2/3] arm64: kaslr: deal with physically misaligned kernel images Ard Biesheuvel
2016-03-02 18:11 ` Ard Biesheuvel
2016-03-02 17:11 ` [PATCH 3/3] arm64: kaslr: increase randomization granularity Ard Biesheuvel
2016-03-02 17:16 ` [PATCH 0/3] arm64: more granular KASLR Ard Biesheuvel
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=1456938712-11089-2-git-send-email-ard.biesheuvel@linaro.org \
--to=ard.biesheuvel@linaro.org \
--cc=linux-arm-kernel@lists.infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).