vm_soft_fault(): Missing DEBUG_PAGE_ACCESS_END()
... in case we'd need to unmap a page that is wired. Fixes the immediate issue of #10977. There's a problem remaining (as discussed in comment 1): If two threads want to wire the same page at the same time (which led to the assertion being triggered), they will now deadlock, waiting for each other to remove the pre-registered VMAreaWiredRange.
This commit is contained in:
parent
52d500e5b4
commit
70d3bd5592
@ -4682,6 +4682,7 @@ vm_soft_fault(VMAddressSpace* addressSpace, addr_t originalAddress,
|
||||
if (area->AddWaiterIfWired(&waiter, address, B_PAGE_SIZE,
|
||||
wiredRange)) {
|
||||
// unlock everything and wait
|
||||
DEBUG_PAGE_ACCESS_END(context.page);
|
||||
context.UnlockAll();
|
||||
waiter.waitEntry.Wait();
|
||||
continue;
|
||||
|
Loading…
Reference in New Issue
Block a user