mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-08-08 10:50:28 +00:00
[metal] Call invlpg(.) when altering any VA page table entries
This commit is contained in:
parent
39df325c4d
commit
b3d7851f01
2 changed files with 2 additions and 1 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue