efi_mm is a kernel-owned address space used for EFI runtime mappings, but it is currently treated like a user address space when manipulating its page tables. There does not seem to be a good reason for this, and it creates unnecessary complications when creating its page tables.
Mark it with the new MMF_KERNEL flag so that the page table handling treats it like init_mm. In particular, this means that: * Split page table locks are no longer initialised or used for efi_mm's page tables. * pagetable_*_ctor() and pagetable_dtor() no longer need to be called for efi_mm's page tables. Assisted-by: Codex:GPT-5.5 Signed-off-by: Kevin Brodsky <[email protected]> --- drivers/firmware/efi/efi.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c index 0327a39d31fa..e5ca45bdc890 100644 --- a/drivers/firmware/efi/efi.c +++ b/drivers/firmware/efi/efi.c @@ -69,6 +69,7 @@ struct mm_struct efi_mm = { .mm_mt = MTREE_INIT_EXT(mm_mt, MM_MT_FLAGS, efi_mm.mmap_lock), .mm_users = ATOMIC_INIT(2), .mm_count = ATOMIC_INIT(1), + .flags = MM_FLAGS_INIT(MMF_KERNEL_MASK), .write_protect_seq = SEQCNT_ZERO(efi_mm.write_protect_seq), MMAP_LOCK_INITIALIZER(efi_mm) .page_table_lock = __SPIN_LOCK_UNLOCKED(efi_mm.page_table_lock), -- 2.51.2
