See http://lists.gnu.org/archive/html/bug-hurd/2010-03/msg00127.html for the story. This should be completely safe, but Sergio believes memory_object_lock_request shouldn't actually block. diff --git a/libpager/lock-object.c b/libpager/lock-object.c index d108666..d8d4a1b 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) {