| 10835 | } |
| 10836 | |
| 10837 | void |
| 10838 | pmap_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 | |
| 10862 | static void * |
| 10863 | pkru_dup_range(void *ctx __unused, void *data) |
no test coverage detected