tboot_mm is a kernel-owned address space used to build the identity map for tboot shutdown. Mark it with MMF_KERNEL so page table allocation and initialisation code treats its page tables as kernel page tables.
Having marked tboot_mm as a kernel mm, we also need to convert pte_alloc_map() (user PTE) to pte_alloc_kernel() (kernel PTE), and drop the matching pte_unmap(). Assisted-by: Codex:GPT-5.5 Signed-off-by: Kevin Brodsky <[email protected]> --- arch/x86/kernel/tboot.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/kernel/tboot.c b/arch/x86/kernel/tboot.c index 46b8f1f16676..08c899f88e41 100644 --- a/arch/x86/kernel/tboot.c +++ b/arch/x86/kernel/tboot.c @@ -99,6 +99,7 @@ static struct mm_struct tboot_mm = { .pgd = swapper_pg_dir, .mm_users = ATOMIC_INIT(2), .mm_count = ATOMIC_INIT(1), + .flags = MM_FLAGS_INIT(MMF_KERNEL_MASK), .write_protect_seq = SEQCNT_ZERO(tboot_mm.write_protect_seq), MMAP_LOCK_INITIALIZER(init_mm) .page_table_lock = __SPIN_LOCK_UNLOCKED(init_mm.page_table_lock), @@ -129,11 +130,10 @@ static int map_tboot_page(unsigned long vaddr, unsigned long pfn, pmd = pmd_alloc(&tboot_mm, pud, vaddr); if (!pmd) return -1; - pte = pte_alloc_map(&tboot_mm, pmd, vaddr); + pte = pte_alloc_kernel(pmd, vaddr); if (!pte) return -1; set_pte_at(&tboot_mm, vaddr, pte, pfn_pte(pfn, prot)); - pte_unmap(pte); /* * PTI poisons low addresses in the kernel page tables in the -- 2.51.2
