summaryrefslogtreecommitdiff
path: root/debian/patches/fix-locking0007-fu_locking_issues.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/fix-locking0007-fu_locking_issues.patch')
-rw-r--r--debian/patches/fix-locking0007-fu_locking_issues.patch67
1 files changed, 67 insertions, 0 deletions
diff --git a/debian/patches/fix-locking0007-fu_locking_issues.patch b/debian/patches/fix-locking0007-fu_locking_issues.patch
new file mode 100644
index 0000000..3086ab3
--- /dev/null
+++ b/debian/patches/fix-locking0007-fu_locking_issues.patch
@@ -0,0 +1,67 @@
+From 7b53ead64d86f4c09d02d0b83f96ce91bd431c4f Mon Sep 17 00:00:00 2001
+From: Justus Winter <4winter@informatik.uni-hamburg.de>
+Date: Sun, 16 Aug 2015 14:35:02 +0200
+Subject: [PATCH gnumach 07/12] fu_locking_issues
+
+---
+ vm/vm_pageout.c | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+diff --git a/vm/vm_pageout.c b/vm/vm_pageout.c
+index 51a6a0d..b676c7b 100644
+--- a/vm/vm_pageout.c
++++ b/vm/vm_pageout.c
+@@ -252,6 +252,8 @@ vm_pageout_setup(
+ vm_object_unlock(new_object);
+ }
+
++ vm_object_lock(old_object);
++
+ if (flush) {
+ /*
+ * Create a place-holder page where the old one was,
+@@ -262,7 +264,6 @@ vm_pageout_setup(
+ == VM_PAGE_NULL)
+ vm_page_more_fictitious();
+
+- vm_object_lock(old_object);
+ vm_page_lock_queues();
+ vm_page_remove(m);
+ vm_page_unlock_queues();
+@@ -281,8 +282,6 @@ vm_pageout_setup(
+ VM_EXTERNAL_STATE_EXISTS);
+ #endif /* MACH_PAGEMAP */
+
+- vm_object_unlock(old_object);
+-
+ vm_object_lock(new_object);
+
+ /*
+@@ -305,7 +304,6 @@ vm_pageout_setup(
+ */
+ vm_page_copy(m, new_m);
+
+- vm_object_lock(old_object);
+ m->dirty = FALSE;
+ pmap_clear_modify(m->phys_addr);
+
+@@ -328,8 +326,6 @@ vm_pageout_setup(
+ VM_EXTERNAL_STATE_EXISTS);
+ #endif /* MACH_PAGEMAP */
+
+- vm_object_unlock(old_object);
+-
+ vm_object_lock(new_object);
+
+ /*
+@@ -383,6 +379,7 @@ vm_pageout_setup(
+ */
+
+ vm_object_unlock(new_object);
++ vm_object_unlock(old_object);
+
+ /*
+ * Return the placeholder page to simplify cleanup.
+--
+2.1.4
+