diff --git a/src/sys/mm/vmm.c b/src/sys/mm/vmm.c index 332d34b9..f36f3b2c 100644 --- a/src/sys/mm/vmm.c +++ b/src/sys/mm/vmm.c @@ -684,6 +684,11 @@ bool vmm_dealwithrequest(void* addr, long error, bool user){ addr = (size_t)addr & ~(0xFFF); + // check if it was already mapped by another thread in the time + // it took to go from interrupt to lock acquire + + if(arch_mmu_ismapped(cls->context->context, addr)) + goto done; cls_t* cls = arch_getcls();