[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAMj1kXH-QmuXGi-5MSEzz7zSpPYWvM2eBPN-NbWF+R=49P2_2g@mail.gmail.com>
Date: Tue, 25 Feb 2025 09:28:35 +0100
From: Ard Biesheuvel <ardb@...nel.org>
To: Keun-O Park <kpark3469@...il.com>
Cc: linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org,
catalin.marinas@....com, will@...nel.org, Keuno Park <keun-o.park@...im.com>
Subject: Re: [PATCH] arm64: kaslr: consider parange is bigger than linear_region_size
On Tue, 25 Feb 2025 at 05:48, Keun-O Park <kpark3469@...il.com> wrote:
>
> On Mon, Feb 24, 2025 at 10:21 AM Keun-O Park <kpark3469@...il.com> wrote:
> >
> > From: Keuno Park <keun-o.park@...im.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 skpped.
> > As a result of this, the kernel's linear region is not randomized.
> > For this case, this patch sets the range by calculating memblock
> > DRAM range to randomize the linear region of kernel.
> >
> > Change-Id: Ib29e45f44928937881d514fb87b4cac828b5a3f5
> > Fixes: 97d6786e0669 ("arm64: mm: account for hotplug memory when randomizing the linear region")
> > Signed-off-by: Keuno Park <keun-o.park@...im.com>
> > ---
> > arch/arm64/mm/init.c | 5 +++++
> > 1 file changed, 5 insertions(+)
> >
> > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
> > index 9c0b8d9558fc..2ee657e2d60f 100644
> > --- a/arch/arm64/mm/init.c
> > +++ b/arch/arm64/mm/init.c
> > @@ -290,6 +290,11 @@ void __init arm64_memblock_init(void)
> > s64 range = linear_region_size -
> > BIT(id_aa64mmfr0_parange_to_phys_shift(parange));
> >
> > + if (range < 0) {
> > + range = linear_region_size -
> > + (memblock_end_of_DRAM() - memblock_start_of_DRAM());
> > + }
> > +
..
>
> In most cases, the hotplug memory code will be working the same as before.
How so? Such memory will usually appear above memblock_end_of_DRAM(),
and due to the randomization, there may not be any space left there.
Powered by blists - more mailing lists