[PATCH v2 0/6] arm64: module: improve module VA range selection

Ard Biesheuvel ardb at kernel.org
Tue May 30 03:31:54 PDT 2023


On Fri, 12 May 2023 at 17:22, Mark Rutland <mark.rutland at arm.com> wrote:
>
> This series (based on v6.4-rc1) aims to make arm64's module allocation
> code more robust. To that end:
>
> * Redundant code for KASAN && !KASAN_VMALLOC is removed, as this
>   combination is no longer possible.
>
> * Module PLT support is mandated, always allowing for the use of a 2G
>   module region. Practically speaking, this is already the case for almost
>   all users as module PLT support is mandated by both KASLR (which most
>   distros including Android, enable this), and by the workaround for ARM
>   erratum 843419 (required by Cortex-A53).
>
> * The module VA region selection is moved to module.c, making it
>   self-contained and easier to follow.
>
> * The default module VA region is expanded to 2G. This ensures that
>   there is sufficient space for the full region using PLTs even when
>   KASLR is disabled or no seed provided.
>
> * The module VA range init code is updated to log when the kernel is too
>   large to support the use of a 128M or 2G module region, to enable
>   debugging of these cases. Contemporary kernels built with debug
>   options can be bigger than 128M, and a kernel bigger than 2G is
>   unlikely but theoretically possible. Adding this logging should help
>   to debug or filter away reports for such cases.
>
> This should allow for loading of very large modules, as Shanker reported
> was an issue:
>
>   https://lore.kernel.org/linux-arm-kernel/20230326170756.3021936-1-sdonthineni@nvidia.com/
>   https://lore.kernel.org/linux-arm-kernel/20230330140437.984211-1-sdonthineni@nvidia.com/
>
> ... and as Ard had an alternative series for:
>
>   https://lore.kernel.org/linux-arm-kernel/20230404135437.2744866-1-ardb@kernel.org/
>
> Since v1 [1]:
> * Log the number of pages in range
> * Remove unused kasan_mod_shadow_end
> * Only randomize when kaslr_enabled()
> * Simplify control-flow
>
> [1] https://lore.kernel.org/linux-arm-kernel/20230509111451.4184972-1-mark.rutland@arm.com/
>
> Thanks,
> Mark.
>
> Mark Rutland (6):
>   arm64: module: remove old !KASAN_VMALLOC logic
>   arm64: kasan: remove !KASAN_VMALLOC remnants
>   arm64: kaslr: split kaslr/module initialization
>   arm64: module: move module randomization to module.c
>   arm64: module: mandate MODULE_PLTS
>   arm64: module: rework module VA range selection
>

For the series,

Reviewed-by: Ard Biesheuvel <ardb at kernel.org>

(I spotted some typos in the commit log somewhere, please refer to my
other reply)



More information about the linux-arm-kernel mailing list