[metal] Call invlpg(.) when altering any VA page table entries

This commit is contained in:
tkchia 2022-10-20 16:26:46 +00:00
parent 39df325c4d
commit b3d7851f01
2 changed files with 2 additions and 1 deletions

View file

@ -27,7 +27,7 @@ noasan int sys_munmap_metal(void *addr, size_t size) {
for (i = 0; i < size; i += 4096) {
e = __get_virtual(mm, __get_pml4t(), (uint64_t)addr + i, false);
if (e) *e = ~(PAGE_V | PAGE_RSRV);
invlpg(e);
invlpg((uint64_t)addr + i);
}
return 0;
}

View file

@ -62,6 +62,7 @@ noasan struct DirectMap sys_mmap_metal(void *paddr, size_t size, int prot,
page |= PAGE_V;
if (!(prot & PROT_EXEC)) page |= PAGE_XD;
*pte = page;
invlpg(addr + i);
} else {
addr = -1;
break;