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

From
Kevin Brodsky <hidden>
Date
2026-07-24 16:22:57
Also in
linux-arch, linux-efi, linux-mm, linux-riscv, linux-s390, linux-um, lkml, loongarch, sparclinux
Reply to
David Hildenbrand (Arm), 2026-07-21
On 21/07/2026 17:07, David Hildenbrand (Arm) wrote:
On 7/16/26 11:35, Kevin Brodsky wrote:
quoted
On 14/07/2026 16:03, Kevin Brodsky wrote:
quoted
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?
Indeed, I looked through comparisons with &init_mm but really all
references to init_mm should be checked. Will do for v2.

- Kevin
Thread (51 messages) 51 messages, 7 authors, last reply 2026-08-11
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help