Re: [PATCH 04/22] mm: use mm_is_kernel() in generic page table code

"David Hildenbrand (Arm)" <[email protected]> Tue, 21 Jul 2026 17:07:22 +0200
Newsgroups gmane.linux.kernel.cross-arch,gmane.linux.kernel.mm,gmane.linux.ports.arm.kernel,gmane.linux.ports.parisc,gmane.linux.ports.ppc64.devel,gmane.linux.ports.riscv,gmane.linux.ports.sparc,gmane.linux.uml.devel,gmane.comp.boot-loaders.tboot.devel,gmane.linux.kernel.efi,gmane.linux.kernel
Message-ID <[email protected]>
On 7/16/26 11:35, Kevin Brodsky wrote:
> On 14/07/2026 16:03, Kevin Brodsky wrote:
>> diff --git a/mm/memory.c b/mm/memory.c
>> index d5e87624f692..c0244c0b0756 100644
>> --- a/mm/memory.c
>> +++ b/mm/memory.c
>> @@ -3394,13 +3394,13 @@ static int apply_to_pte_range(struct mm_struct *mm, pmd_t *pmd,
>>  	spinlock_t *ptl;
>>  
>>  	if (create) {
>> - mapped_pte = pte = (mm == &init_mm) ?
>> + mapped_pte = pte = mm_is_kernel(mm) ?
>>  			pte_alloc_kernel_track(pmd, addr, mask) :
>>  			pte_alloc_map_lock(mm, pmd, addr, &ptl);
> 
> As noted by Sashiko, this is a little problematic because if
> apply_to_page_range() is called on efi_mm, then we will end up with
> __pte_alloc_kernel() taking the init_mm lock, since that's hardcoded.
> 
> That probably means we should pass the mm to __pte_alloc_kernel().

Agreed.

I guess we have to audit all existing init_mm usage?

-- 
Cheers,

David