Re: [PATCH] arm64: mm: account for hotplug memory when randomizing the linear region

From: Anshuman Khandual
Date: Tue Nov 10 2020 - 22:49:47 EST




On 11/11/20 12:44 AM, Catalin Marinas wrote:
> On Wed, 14 Oct 2020 10:18:57 +0200, Ard Biesheuvel wrote:
>> As a hardening measure, we currently randomize the placement of
>> physical memory inside the linear region when KASLR is in effect.
>> Since the random offset at which to place the available physical
>> memory inside the linear region is chosen early at boot, it is
>> based on the memblock description of memory, which does not cover
>> hotplug memory. The consequence of this is that the randomization
>> offset may be chosen such that any hotplugged memory located above
>> memblock_end_of_DRAM() that appears later is pushed off the end of
>> the linear region, where it cannot be accessed.
>>
>> [...]
>
> Applied to arm64 (for-next/mem-hotplug), thanks!
>
> [1/1] arm64: mm: account for hotplug memory when randomizing the linear region
> https://git.kernel.org/arm64/c/97d6786e0669
>

Hello Catalin,

Got delayed and never made here in time, sorry about that. Nonetheless,
I have got something working with respect to the generic mechanism that
David Hildenbrand had asked for earlier.

https://patchwork.kernel.org/project/linux-arm-kernel/patch/1600332402-30123-1-git-send-email-anshuman.khandual@xxxxxxx/

I am wondering if we could instead consider merging the above patch with
a small change that Ard had pointed out earlier [1], I will send out a
revision if required.

I am asking this because the patch in question is a memory hotplug fix
and should be back ported to other stable releases. Implementing that
via the new proposed generic framework might make it difficult for a
possible arm64 specific backport. We could then add the new generic
framework and move this fix to an arch callback. Let me know if this
would be an feasible option. Thank you.

- Anshuman

[1] From Ard Biesheuvel

"So I think your original approach makes more sense here, although I
think you want '(start + size - 1) <= __pa(PAGE_END - 1)' in the
comparison above (and please drop the redundant parens)"

+ David Hildenbrand <david@xxxxxxxxxx>