commit-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] Debian GNU Mach packaging branch, master, updated. debian/2%1.3.99


From: Samuel Thibault
Subject: [SCM] Debian GNU Mach packaging branch, master, updated. debian/2%1.3.99.dfsg.git20120923-1-3-gf38f5eb
Date: Mon, 19 Nov 2012 15:57:56 +0000

The following commit has been merged in the master branch:
commit f38f5eb3e6091f28b0aa6619bea94e95ac3f38cb
Author: Samuel Thibault <address@hidden>
Date:   Mon Nov 19 16:57:44 2012 +0100

    patches/20_zeromap.patch: New patch to fix abortion on mmap(size=0);

diff --git a/debian/changelog b/debian/changelog
index a8f4e6b..6a2bf79 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+gnumach (2:1.3.99.dfsg.git20120923-2) UNRELEASED; urgency=low
+
+  * patches/20_zeromap.patch: New patch to fix abortion on mmap(size=0);
+
+ -- Samuel Thibault <address@hidden>  Mon, 19 Nov 2012 16:57:00 +0100
+
 gnumach (2:1.3.99.dfsg.git20120923-1) unstable; urgency=low
 
   * New upstream snapshot
diff --git a/debian/patches/20_zeromap.patch b/debian/patches/20_zeromap.patch
new file mode 100644
index 0000000..7268448
--- /dev/null
+++ b/debian/patches/20_zeromap.patch
@@ -0,0 +1,32 @@
+As discussed on IRC already, the 'diff != 0' GNU Mach assertion failure
+(vm/vm_map.c:1002), that came in with the recent allocator improvement
+patch, is as easy as follows to reproduce:
+
+    vm_map(mach_task_self(), 0, 0, 0, 1, 0, 0, 0, 0, 0, 0);
+
+Before that patch, GNU Mach accepted such a call and returnd 0 -- though
+I did not check what effect it actually has.  (And I don't think it has
+any useful one.)  I'm also reading that as of lately (Linux 2.6.12), mmap
+with length = 0 is to return EINVAL; and mmap is, I think, the foremost
+user of vm_map.
+
+Richard wants to address this problem, but in the mean time, I'm using
+the following patch, which makes such a vm_map call return
+KERN_INVALID_ARGUMENT, translated to EINVAL for mmap
+(hurd/hurd.h:__hurd_fail).
+
+--- a/vm/vm_user.c~    2012-11-19 13:02:18.000000000 +0100
++++ b/vm/vm_user.c     2012-11-19 13:11:32.000000000 +0100
+@@ -342,6 +342,10 @@ kern_return_t vm_map(
+                 return(KERN_INVALID_ARGUMENT);
+         }
+ 
++      /* Avoid 'diff != 0' assertion failure later on.  */
++      if (size == 0)
++              return KERN_INVALID_ARGUMENT;
++
+       *address = trunc_page(*address);
+       size = round_page(size);
+ 
+
+
diff --git a/debian/patches/series b/debian/patches/series
index 8433870..fa911f4 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,6 +1,7 @@
 00_clean_gfdl.patch
 11_ignore_CSIn.patch
 12_version_suffix.patch
+20_zeromap.patch
 50_initrd.patch
 60_bigmem.patch
 70_dde.patch

-- 
Debian GNU Mach packaging



reply via email to

[Prev in Thread] Current Thread [Next in Thread]