From: kpark3469@gmail.com
To: ardb@kernel.org, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Cc: catalin.marinas@arm.com, will@kernel.org, keun-o.park@katim.com
Subject: [PATCH v2] arm64: kaslr: warning linear region randomization on failure
Date: Tue, 4 Mar 2025 08:26:34 +0400 [thread overview]
Message-ID: <20250304042634.591375-1-kpark3469@gmail.com> (raw)
In-Reply-To: <CAMj1kXHyZ5_+ZrcRtdx4X8LA+mzCNcXUZM_3QcEudYGbuGBq0w@mail.gmail.com>
From: Keuno Park <keun-o.park@katim.com>
On systems using 4KB pages and having 39 VA_BITS, linear_region_size
gets 256GiB space. It was observed that some SoCs such as Qualcomm
QCM8550 returns 40bits of PA range from MMFR0_EL1. This leads range
value to have minus as the variable range is s64, so that all the
calculations for randomizing linear address space are skipped.
As a result of this, the kernel's linear region is not randomized.
For hotplug memory users, kernel needs to inform that linear region
is not randomized. However, if CONFIG_MEMORY_HOTPLUG is turned off,
then kernel tries to fall back to the legacy way to randomize linear
region.
Change-Id: Ib29e45f44928937881d514fb87b4cac828b5a3f5
Fixes: 97d6786e0669 ("arm64: mm: account for hotplug memory when randomizing the linear region")
Signed-off-by: Keuno Park <keun-o.park@katim.com>
---
arch/arm64/mm/init.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
index 9c0b8d9558fc..848790a9e75e 100644
--- a/arch/arm64/mm/init.c
+++ b/arch/arm64/mm/init.c
@@ -290,6 +290,17 @@ void __init arm64_memblock_init(void)
s64 range = linear_region_size -
BIT(id_aa64mmfr0_parange_to_phys_shift(parange));
+ if (range < 0) {
+ if (IS_ENABLED(CONFIG_MEMORY_HOTPLUG)) {
+ WARN(true, "linear region is not randomized due to bigger parange\n");
+ } else {
+ pr_warn("falling back to the range considering on-boot DRAM size\n");
+ range = linear_region_size -
+ (memblock_end_of_DRAM() -
+ memblock_start_of_DRAM());
+ }
+ }
+
/*
* If the size of the linear region exceeds, by a sufficient
* margin, the size of the region that the physical memory can
--
2.34.1
prev parent reply other threads:[~2025-03-04 4:26 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-24 6:21 [PATCH] arm64: kaslr: consider parange is bigger than linear_region_size Keun-O Park
2025-02-24 8:10 ` Ard Biesheuvel
2025-02-25 4:47 ` Keun-O Park
2025-02-25 8:28 ` Ard Biesheuvel
2025-02-28 5:55 ` Keun-O Park
2025-02-28 13:11 ` Ard Biesheuvel
2025-03-01 4:39 ` Will Deacon
2025-03-01 6:37 ` Keun-O Park
2025-03-04 4:26 ` kpark3469 [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=20250304042634.591375-1-kpark3469@gmail.com \
--to=kpark3469@gmail.com \
--cc=ardb@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=keun-o.park@katim.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=will@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®