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

r6462 - in glibc-package/trunk/debian: . patches patches/hurd-i386



Author: sthibault
Date: 2015-07-09 12:04:13 +0000 (Thu, 09 Jul 2015)
New Revision: 6462

Added:
   glibc-package/trunk/debian/patches/hurd-i386/cvs-mlock.diff
Modified:
   glibc-package/trunk/debian/changelog
   glibc-package/trunk/debian/patches/series
Log:
hurd-i386/cvs-mlock.diff: New patch to permit to use mlock from non-root process.


Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog	2015-06-16 18:56:47 UTC (rev 6461)
+++ glibc-package/trunk/debian/changelog	2015-07-09 12:04:13 UTC (rev 6462)
@@ -1,3 +1,10 @@
+glibc (2.19-19) UNRELEASED; urgency=medium
+
+  * patches/hurd-i386/cvs-mlock.diff: New patch to permit to use mlock from
+    non-root process.
+
+ -- Samuel Thibault <sthibault@debian.org>  Thu, 09 Jul 2015 14:02:08 +0200
+
 glibc (2.19-18) unstable; urgency=medium
 
   [ Aurelien Jarno ]

Added: glibc-package/trunk/debian/patches/hurd-i386/cvs-mlock.diff
===================================================================
--- glibc-package/trunk/debian/patches/hurd-i386/cvs-mlock.diff	                        (rev 0)
+++ glibc-package/trunk/debian/patches/hurd-i386/cvs-mlock.diff	2015-07-09 12:04:13 UTC (rev 6462)
@@ -0,0 +1,72 @@
+commit ed4060f50ea84c7e238110955253647fc091aee9
+Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Date:   Thu Jul 9 13:56:30 2015 +0200
+
+    hurd: permit to use mlock from non-root process
+    
+    * sysdeps/mach/hurd/mlock.c (mlock): When __get_privileged_ports
+    returns an error, also try to use host port from __mach_host_self for
+    the __vm_wire call.
+    * sysdeps/mach/hurd/munlock.c (munlock): Likewise.
+
+diff --git a/sysdeps/mach/hurd/mlock.c b/sysdeps/mach/hurd/mlock.c
+index 10078e7..8ef568e 100644
+--- a/sysdeps/mach/hurd/mlock.c
++++ b/sysdeps/mach/hurd/mlock.c
+@@ -28,19 +28,20 @@
+ int
+ mlock (const void *addr, size_t len)
+ {
+-  mach_port_t hostpriv;
++  mach_port_t host;
+   vm_address_t page;
+   error_t err;
+ 
+-  err = __get_privileged_ports (&hostpriv, NULL);
++  err = __get_privileged_ports (&host, NULL);
+   if (err)
+-    return __hurd_fail (EPERM);
++    host = __mach_host_self();
+ 
+   page = trunc_page ((vm_address_t) addr);
+   len = round_page ((vm_address_t) addr + len) - page;
+-  err = __vm_wire (hostpriv, __mach_task_self (), page, len,
+-		   VM_PROT_READ);
+-  __mach_port_deallocate (__mach_task_self (), hostpriv);
++
++  err = __vm_wire (host, __mach_task_self (), page, len, VM_PROT_READ);
++  if (host != __mach_host_self())
++    __mach_port_deallocate (__mach_task_self (), host);
+ 
+   return err ? __hurd_fail (err) : 0;
+ }
+diff --git a/sysdeps/mach/hurd/munlock.c b/sysdeps/mach/hurd/munlock.c
+index 411115d..d063afc 100644
+--- a/sysdeps/mach/hurd/munlock.c
++++ b/sysdeps/mach/hurd/munlock.c
+@@ -27,18 +27,20 @@
+ int
+ munlock (const void *addr, size_t len)
+ {
+-  mach_port_t hostpriv;
++  mach_port_t host;
+   vm_address_t page;
+   error_t err;
+ 
+-  err = __get_privileged_ports (&hostpriv, NULL);
++  err = __get_privileged_ports (&host, NULL);
+   if (err)
+-    return __hurd_fail (EPERM);
++    host = __mach_host_self();
+ 
+   page = trunc_page ((vm_address_t) addr);
+   len = round_page ((vm_address_t) addr + len) - page;
+-  err = __vm_wire (hostpriv, __mach_task_self (), page, len, VM_PROT_NONE);
+-  __mach_port_deallocate (__mach_task_self (), hostpriv);
++
++  err = __vm_wire (host, __mach_task_self (), page, len, VM_PROT_NONE);
++  if (host != __mach_host_self())
++    __mach_port_deallocate (__mach_task_self (), host);
+ 
+   return err ? __hurd_fail (err) : 0;
+ }

Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series	2015-06-16 18:56:47 UTC (rev 6461)
+++ glibc-package/trunk/debian/patches/series	2015-07-09 12:04:13 UTC (rev 6462)
@@ -158,6 +158,7 @@
 hurd-i386/cvs-libpthread-dlopen.diff
 hurd-i386/cvs-libpthread-libc-lockP.diff
 hurd-i386/cvs-libpthread-libc-lockP2.diff
+hurd-i386/cvs-mlock.diff
 
 i386/local-biarch.diff
 i386/local-cmov.diff


Reply to: