[PATCH 08/15] x86: Physical address comparisons in fill_p*d/pte
Dave Hansen
dave.hansen at intel.com
Tue Feb 11 11:59:15 PST 2025
On 2/7/25 08:37, Maciej Wieczor-Retman wrote:
> @@ -287,7 +290,7 @@ static pte_t *fill_pte(pmd_t *pmd, unsigned long vaddr)
> if (pmd_none(*pmd)) {
> pte_t *pte = (pte_t *) spp_getpage();
> pmd_populate_kernel(&init_mm, pmd, pte);
> - if (pte != pte_offset_kernel(pmd, 0))
> + if (__pa(pte) != (pmd_val(*pmd) & pmd_pfn_mask(*pmd)))
> printk(KERN_ERR "PAGETABLE BUG #03!\n");
> }
> return pte_offset_kernel(pmd, vaddr);
Open coding it like this is fine with me. The p*_offset_kernel(p*,0)
thing is arguably even harder to parse.
More information about the linux-riscv
mailing list