The kpkeys_hardened_pgtables feature needs to be initialised as soon as the buddy allocator becomes available. The canonical place to handle this is mem_init().
With that done, all the bits are in place and we can advertise support for kpkeys_hardened_pgtables by selecting ARCH_HAS_KPKEYS_HARDENED_PGTABLES if ARM64_POE is enabled. Signed-off-by: Kevin Brodsky <[email protected]> --- arch/arm64/Kconfig | 1 + arch/arm64/mm/init.c | 1 + 2 files changed, 2 insertions(+) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index ab06324a50ae..43d3ab744535 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -2146,6 +2146,7 @@ config ARM64_POE select ARCH_USES_HIGH_VMA_FLAGS select ARCH_HAS_PKEYS select ARCH_HAS_KPKEYS + select ARCH_HAS_KPKEYS_HARDENED_PGTABLES help The Permission Overlay Extension is used to implement Memory Protection Keys. Memory Protection Keys provides a mechanism for diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index 97987f850a33..7985045875cf 100644 --- a/arch/arm64/mm/init.c +++ b/arch/arm64/mm/init.c @@ -386,6 +386,7 @@ bool page_alloc_available __ro_after_init; void __init mem_init(void) { page_alloc_available = true; + kpkeys_hardened_pgtables_init(); swiotlb_update_mem_attributes(); } -- 2.51.2
