MCPcopy Create free account
hub / github.com/F-Stack/f-stack / pmap_pti_remove_kva

Function pmap_pti_remove_kva

freebsd/amd64/amd64/pmap.c:10837–10860  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10835}
10836
10837void
10838pmap_pti_remove_kva(vm_offset_t sva, vm_offset_t eva)
10839{
10840 pt_entry_t *pte;
10841 vm_offset_t va;
10842
10843 if (!pti)
10844 return;
10845 sva = rounddown2(sva, PAGE_SIZE);
10846 MPASS(sva > VM_MAXUSER_ADDRESS);
10847 eva = roundup2(eva, PAGE_SIZE);
10848 MPASS(sva < eva);
10849 VM_OBJECT_WLOCK(pti_obj);
10850 for (va = sva; va < eva; va += PAGE_SIZE) {
10851 pte = pmap_pti_pte(va, NULL);
10852 KASSERT((*pte & X86_PG_V) != 0,
10853 ("invalid pte va %#lx pte %#lx pt %#lx", va,
10854 (u_long)pte, *pte));
10855 pte_clear(pte);
10856 pmap_pti_unwire_pte(pte, va);
10857 }
10858 pmap_invalidate_range(kernel_pmap, sva, eva);
10859 VM_OBJECT_WUNLOCK(pti_obj);
10860}
10861
10862static void *
10863pkru_dup_range(void *ctx __unused, void *data)

Callers 3

user_ldt_allocFunction · 0.85
user_ldt_dereflFunction · 0.85
cpu_thread_cleanFunction · 0.85

Calls 3

pmap_pti_pteFunction · 0.85
pmap_pti_unwire_pteFunction · 0.85
pmap_invalidate_rangeFunction · 0.70

Tested by

no test coverage detected