summaryrefslogtreecommitdiff
path: root/debian/patches/libpager_deadlock.patch
blob: ea2d90873758979b08ae755fe69961780379f0dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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)
     {