* VMArea::Unwire(addr_t, size_t, bool): Don't delete the removed range, but

return it.
* lock_memory_etc(): On error the VMAreaWiredRange object could be leaked.
* [un]lock_memory_etc(): Call VMArea::Unwire() with the cache locked and
  explicitly delete the range object after unlocking the cache to avoid
  potential deadlocks.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36035 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2010-04-05 12:12:36 +00:00
parent 63f8d1346e
commit 4f774c503c
3 changed files with 42 additions and 13 deletions
+1 -1
View File
@@ -95,7 +95,7 @@ struct VMArea {
void Wire(VMAreaWiredRange* range);
void Unwire(VMAreaWiredRange* range);
void Unwire(addr_t base, size_t size, bool writable);
VMAreaWiredRange* Unwire(addr_t base, size_t size, bool writable);
bool AddWaiterIfWired(VMAreaUnwiredWaiter* waiter);
bool AddWaiterIfWired(VMAreaUnwiredWaiter* waiter,