diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2012-09-23 00:04:06 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2012-09-23 00:04:06 +0200 |
commit | 901c61a1d25e7c8963e51012760a82730eda1910 (patch) | |
tree | c8d75f7a818ac4301112a5c17444b2a634fb2dea /libpager/lock-object.c | |
parent | 0931a9f15e7436346e33c66129f3ff822c33f52a (diff) |
Fix pager deadlock
http://lists.gnu.org/archive/html/bug-hurd/2010-03/msg00127.html
* libpager/lock-object.c (_pager_lock_object): Release interlock before
calling memory_object_lock_request, to let the callbacks take it.
Diffstat (limited to 'libpager/lock-object.c')
-rw-r--r-- | libpager/lock-object.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/libpager/lock-object.c b/libpager/lock-object.c index d108666e..d8d4a1b7 100644 --- a/libpager/lock-object.c +++ b/libpager/lock-object.c @@ -65,9 +65,11 @@ _pager_lock_object (struct pager *p, } } + mutex_unlock (&p->interlock); memory_object_lock_request (p->memobjcntl, offset, size, should_return, should_flush, lock_value, sync ? p->port.port_right : MACH_PORT_NULL); + mutex_lock (&p->interlock); if (sync) { |