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

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



Author: sthibault
Date: 2014-11-23 00:27:17 +0000 (Sun, 23 Nov 2014)
New Revision: 6334

Added:
   glibc-package/trunk/debian/patches/hurd-i386/tg-WRLCK-upgrade.diff
Modified:
   glibc-package/trunk/debian/changelog
   glibc-package/trunk/debian/patches/series
Log:
patches/hurd-i386/tg-WRLCK-upgrade.diff: New patch to fix atomicity of upgrading rd locks into wr locks.


Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog	2014-11-16 11:29:46 UTC (rev 6333)
+++ glibc-package/trunk/debian/changelog	2014-11-23 00:27:17 UTC (rev 6334)
@@ -3,11 +3,13 @@
   [ Samuel Thibault ]
   * patches/hurd-i386/libpthread_spin-lock.diff: New patch to fix spin-lock.h
     inclusion order.
+  * patches/hurd-i386/tg-WRLCK-upgrade.diff: New patch to fix atomicity of
+    upgrading rd locks into wr locks.
 
   [ Adam Conrad ]
   * debian/rules.d/tarball.mk: Fix update-from-upstream manual/* filter rule.
 
- [ Petr Salinger ]
+  [ Petr Salinger ]
   * kfreebsd/local-sysdeps.diff: update to revision 5688 (from glibc-bsd).
     Do not return EINTR from sigwait. Closes: #763705.
 

Added: glibc-package/trunk/debian/patches/hurd-i386/tg-WRLCK-upgrade.diff
===================================================================
--- glibc-package/trunk/debian/patches/hurd-i386/tg-WRLCK-upgrade.diff	                        (rev 0)
+++ glibc-package/trunk/debian/patches/hurd-i386/tg-WRLCK-upgrade.diff	2014-11-23 00:27:17 UTC (rev 6334)
@@ -0,0 +1,30 @@
+From: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Subject: [PATCH] Make F_WRLCK potentially upgrade owned F_RDLCK
+
+lockf(LOCK_EX) would drop any existing shared lock before taking the exclusive
+lock. F_WRLCK needs an atomic upgrade, so use lockf(LOCK_SH|LOCK_EX) instead.
+
+Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+* sysdeps/mach/hurd/fcntl.c (__libc_fcntl): For F_WRLCK, set cmd to
+LOCK_SH|LOCK_EX instead of LOCK_SH.
+
+---
+ sysdeps/mach/hurd/fcntl.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sysdeps/mach/hurd/fcntl.c b/sysdeps/mach/hurd/fcntl.c
+index 70180fa..b827fec 100644
+--- a/sysdeps/mach/hurd/fcntl.c
++++ b/sysdeps/mach/hurd/fcntl.c
+@@ -151,7 +151,7 @@ __libc_fcntl (int fd, int cmd, ...)
+ 	switch (fl->l_type)
+ 	  {
+ 	  case F_RDLCK: cmd |= LOCK_SH; break;
+-	  case F_WRLCK: cmd |= LOCK_EX; break;
++	  case F_WRLCK: cmd |= LOCK_SH | LOCK_EX; break;
+ 	  case F_UNLCK: cmd |= LOCK_UN; break;
+ 	  default:
+ 	    errno = EINVAL;
+-- 
+tg: (9a079e2..) t/WRLCK-upgrade (depends on: baseline)

Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series	2014-11-16 11:29:46 UTC (rev 6333)
+++ glibc-package/trunk/debian/patches/series	2014-11-23 00:27:17 UTC (rev 6334)
@@ -154,6 +154,7 @@
 hurd-i386/submitted-bind_umask2.diff
 hurd-i386/cvs-fork_ss_hang.diff
 hurd-i386/local-libpthread-stacksize.diff
+hurd-i386/tg-WRLCK-upgrade.diff
 
 i386/local-biarch.diff
 i386/local-cmov.diff


Reply to: