Le 04/08/2026 à 21:22, Pedro Falcato a écrit :
On Tue, Aug 04, 2026 at 12:22:19PM +0100, Lorenzo Stoakes (ARM) wrote:


                        if (!pte) {
                                mmap_read_unlock(mm);
                                result = SCAN_NO_PTE_TABLE;
diff --git a/mm/pgtable-generic.c b/mm/pgtable-generic.c
index b91b1a98029c..2cfc6e608ef4 100644
--- a/mm/pgtable-generic.c
+++ b/mm/pgtable-generic.c
@@ -308,8 +308,8 @@ pte_t *__pte_offset_map(pmd_t *pmd, unsigned long addr, 
pmd_t *pmdvalp)
        return NULL;
  }

-pte_t *pte_offset_map_ro_nolock(struct mm_struct *mm, pmd_t *pmd,
-                               unsigned long addr, spinlock_t **ptlp)
+const pte_t *pte_offset_map_ro_nolock(struct mm_struct *mm, pmd_t *pmd,

Can pmd be const too?

I was going to say "yes but then pmdp_get() also needs to be constfified" but
actually no, it can't:

pte_t *__pte_offset_map(pmd_t *pmd, unsigned long addr, pmd_t *pmdvalp) {
         if (unlikely(pmd_bad(pmdval))) {
                 pmd_clear_bad(pmd);
                 goto nomap;
         }
}

so PTE mapping actually needs to write to the pmdp if the pmd looks bad.
Tricky stuff :)

But if pmd is const, can it be bad at all ?

Christophe



Reply via email to