]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
arm64/mm: Replace BUG_ON() with VM_WARN_ON_ONCE()
authorAnshuman Khandual <anshuman.khandual@arm.com>
Thu, 30 Apr 2026 05:38:59 +0000 (06:38 +0100)
committerWill Deacon <will@kernel.org>
Tue, 19 May 2026 10:43:31 +0000 (11:43 +0100)
Avoid BUG_ON() while checking for inconsistent page table state conditions
and instead replace them with VM_WARN_ON_ONCE().

Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Ryan Roberts <ryan.roberts@arm.com>
Cc: David Hildenbrand <david@kernel.org>
Cc: linux-kernel@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Acked-by: David Hildenbrand (Arm) <david@kernel.org>
Suggested-by: David Hildenbrand (Arm) <david@kernel.org>
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/include/asm/pgtable.h
arch/arm64/mm/mmu.c

index 4dfa42b7d05356a5432995d04eec37752805616c..c9e4e00a9af2724a410243a5f5649df52c49c88f 100644 (file)
@@ -1007,7 +1007,7 @@ static inline pud_t *p4d_pgtable(p4d_t p4d)
 
 static inline phys_addr_t pud_offset_phys(p4d_t *p4dp, unsigned long addr)
 {
-       BUG_ON(!pgtable_l4_enabled());
+       VM_WARN_ON_ONCE(!pgtable_l4_enabled());
 
        return p4d_page_paddr(READ_ONCE(*p4dp)) + pud_index(addr) * sizeof(pud_t);
 }
@@ -1130,7 +1130,7 @@ static inline p4d_t *pgd_to_folded_p4d(pgd_t *pgdp, unsigned long addr)
 
 static inline phys_addr_t p4d_offset_phys(pgd_t *pgdp, unsigned long addr)
 {
-       BUG_ON(!pgtable_l5_enabled());
+       VM_WARN_ON_ONCE(!pgtable_l5_enabled());
 
        return pgd_page_paddr(READ_ONCE(*pgdp)) + p4d_index(addr) * sizeof(p4d_t);
 }
index dd85e093ffdb1773f5f1f665eaff2b3ae74564e9..4c8959153ac47d0a35ac55c99701c4e5734a5d04 100644 (file)
@@ -273,8 +273,8 @@ static int init_pmd(pmd_t *pmdp, unsigned long addr, unsigned long end,
                        if (ret)
                                return ret;
 
-                       BUG_ON(pmd_val(old_pmd) != 0 &&
-                              pmd_val(old_pmd) != READ_ONCE(pmd_val(*pmdp)));
+                       VM_WARN_ON_ONCE(pmd_val(old_pmd) != 0 &&
+                                       pmd_val(old_pmd) != READ_ONCE(pmd_val(*pmdp)));
                }
                phys += next - addr;
        } while (pmdp++, addr = next, addr != end);
@@ -394,8 +394,8 @@ static int alloc_init_pud(p4d_t *p4dp, unsigned long addr, unsigned long end,
                        if (ret)
                                goto out;
 
-                       BUG_ON(pud_val(old_pud) != 0 &&
-                              pud_val(old_pud) != READ_ONCE(pud_val(*pudp)));
+                       VM_WARN_ON_ONCE(pud_val(old_pud) != 0 &&
+                                       pud_val(old_pud) != READ_ONCE(pud_val(*pudp)));
                }
                phys += next - addr;
        } while (pudp++, addr = next, addr != end);
@@ -445,8 +445,8 @@ static int alloc_init_p4d(pgd_t *pgdp, unsigned long addr, unsigned long end,
                if (ret)
                        goto out;
 
-               BUG_ON(p4d_val(old_p4d) != 0 &&
-                      p4d_val(old_p4d) != READ_ONCE(p4d_val(*p4dp)));
+               VM_WARN_ON_ONCE(p4d_val(old_p4d) != 0 &&
+                               p4d_val(old_p4d) != READ_ONCE(p4d_val(*p4dp)));
 
                phys += next - addr;
        } while (p4dp++, addr = next, addr != end);