Re: [PATCH 08/15] x86: Physical address comparisons in fill_p*d/pte

From: Dave Hansen
Date: Tue Feb 11 2025 - 15:00:34 EST


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.