Lines Matching refs:p4d
50 static inline bool kasan_pud_table(p4d_t p4d)
52 return p4d_page(p4d) == virt_to_page(lm_alias(kasan_early_shadow_pud));
55 static inline bool kasan_pud_table(p4d_t p4d)
146 static int __ref zero_pud_populate(p4d_t *p4d, unsigned long addr,
149 pud_t *pud = pud_offset(p4d, addr);
189 p4d_t *p4d = p4d_offset(pgd, addr);
198 p4d_populate(&init_mm, p4d,
200 pud = pud_offset(p4d, addr);
209 if (p4d_none(*p4d)) {
213 p = pud_alloc(&init_mm, p4d, addr);
221 p4d_populate(&init_mm, p4d, p);
224 zero_pud_populate(p4d, addr, next);
225 } while (p4d++, addr = next, addr != end);
248 p4d_t *p4d;
262 p4d = p4d_offset(pgd, addr);
263 p4d_populate(&init_mm, p4d,
265 pud = pud_offset(p4d, addr);
322 static void kasan_free_pud(pud_t *pud_start, p4d_t *p4d)
333 pud_free(&init_mm, (pud_t *)page_to_virt(p4d_page(*p4d)));
334 p4d_clear(p4d);
339 p4d_t *p4d;
343 p4d = p4d_start + i;
344 if (!p4d_none(*p4d))
424 static void kasan_remove_p4d_table(p4d_t *p4d, unsigned long addr,
429 for (; addr < end; addr = next, p4d++) {
434 if (!p4d_present(*p4d))
437 if (kasan_pud_table(*p4d)) {
440 p4d_clear(p4d);
444 pud = pud_offset(p4d, addr);
446 kasan_free_pud(pud_offset(p4d, 0), p4d);
464 p4d_t *p4d;
480 p4d = p4d_offset(pgd, addr);
481 kasan_remove_p4d_table(p4d, addr, next);