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

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



Author: sthibault
Date: 2014-08-27 22:56:00 +0000 (Wed, 27 Aug 2014)
New Revision: 6259

Added:
   glibc-package/trunk/debian/patches/hurd-i386/cvs-bind_umask.diff
Removed:
   glibc-package/trunk/debian/patches/hurd-i386/submitted-bind_umask.diff
Modified:
   glibc-package/trunk/debian/changelog
   glibc-package/trunk/debian/patches/series
Log:
submitted-bind_umask.diff commited upstream


Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog	2014-08-27 22:15:05 UTC (rev 6258)
+++ glibc-package/trunk/debian/changelog	2014-08-27 22:56:00 UTC (rev 6259)
@@ -3,8 +3,8 @@
   [ Samuel Thibault ]
   * patches/hurd-i386/tg-thread-cancel.diff: Update patch against two other
     overzealous assertions.
-  * patches/hurd-i386/submitted-bind_umask.diff: Split into
-    patches/hurd-i386/submitted-bind_umask2 as requested by upstream.
+  * patches/hurd-i386/submitted-bind_umask.diff: Split into cvs-bind_umask.diff
+    and submitted-bind_umask2.diff as requested by upstream.
 
  -- Aurelien Jarno <aurel32@debian.org>  Wed, 27 Aug 2014 08:22:41 +0200
 

Copied: glibc-package/trunk/debian/patches/hurd-i386/cvs-bind_umask.diff (from rev 6258, glibc-package/trunk/debian/patches/hurd-i386/submitted-bind_umask.diff)
===================================================================
--- glibc-package/trunk/debian/patches/hurd-i386/cvs-bind_umask.diff	                        (rev 0)
+++ glibc-package/trunk/debian/patches/hurd-i386/cvs-bind_umask.diff	2014-08-27 22:56:00 UTC (rev 6259)
@@ -0,0 +1,76 @@
+2014-08-27  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+	Simplify atomicity of socket creation in bind.
+
+        * sysdeps/mach/hurd/bind.c (__bind): Use dir_lookup(node, "") instead of
+        looking up the name after linking the file.
+
+---
+ bind.c |   48 +++++++++++++++++++++++++-----------------------
+ 1 file changed, 25 insertions(+), 23 deletions(-)
+
+--- a/sysdeps/mach/hurd/bind.c
++++ b/sysdeps/mach/hurd/bind.c
+@@ -40,7 +40,7 @@ __bind  (int fd, __CONST_SOCKADDR_ARG ad
+       char *name = _hurd_sun_path_dupa (addr, len);
+       /* For the local domain, we must create a node in the filesystem
+ 	 using the ifsock translator and then fetch the address from it.  */
+-      file_t dir, node;
++      file_t dir, node, ifsock;
+       char *n;
+ 
+       dir = __file_name_split (name, &n);
+@@ -61,36 +61,32 @@ __bind  (int fd, __CONST_SOCKADDR_ARG ad
+ 				       MACH_MSG_TYPE_COPY_SEND);
+ 	  if (! err)
+ 	    {
+-	      /* Link the node, now a socket, into the target directory.  */
+-	      err = __dir_link (dir, node, n, 1);
+-	      if (err == EEXIST)
++	      enum retry_type doretry;
++	      char retryname[1024];
++	      /* Get a port to the ifsock translator.  */
++	      err = __dir_lookup (node, "", 0, 0, &doretry, retryname, &ifsock);
++	      if (! err && (doretry != FS_RETRY_NORMAL || retryname[0] != '\0'))
+ 		err = EADDRINUSE;
+ 	    }
+-	  __mach_port_deallocate (__mach_task_self (), node);
+ 	  if (! err)
+ 	    {
+-	      /* Get a port to the ifsock translator.  */
+-	      file_t ifsock = __file_name_lookup_under (dir, n, 0, 0);
+-	      if (ifsock == MACH_PORT_NULL)
++	      /* Get the address port.  */
++	      err = __ifsock_getsockaddr (ifsock, &aport);
++	      if (err == MIG_BAD_ID || err == EOPNOTSUPP)
++		err = EGRATUITOUS;
++	      if (! err)
+ 		{
+-		  err = errno;
+-		  /* If we failed, get rid of the node we created.  */
+-		  __dir_unlink (dir, n);
+-		}
+-	      else
+-		{
+-		  /* Get the address port.  */
+-		  err = __ifsock_getsockaddr (ifsock, &aport);
+-		  if (err == MIG_BAD_ID || err == EOPNOTSUPP)
+-		    /* We are not talking to /hurd/ifsock.  Probably
+-		       someone came in after we linked our node, unlinked
+-		       it, and replaced it with a different node, before we
+-		       did our lookup.  Treat it as if our link had failed
+-		       with EEXIST.  */
++		  /* Link the node, now a socket with proper mode, into the
++		     target directory.  */
++		  err = __dir_link (dir, node, n, 1);
++		  if (err == EEXIST)
+ 		    err = EADDRINUSE;
++		  if (err)
++		    __mach_port_deallocate (__mach_task_self (), aport);
+ 		}
+ 	      __mach_port_deallocate (__mach_task_self (), ifsock);
+ 	    }
++	  __mach_port_deallocate (__mach_task_self (), node);
+ 	}
+       __mach_port_deallocate (__mach_task_self (), dir);
+ 

Deleted: glibc-package/trunk/debian/patches/hurd-i386/submitted-bind_umask.diff
===================================================================
--- glibc-package/trunk/debian/patches/hurd-i386/submitted-bind_umask.diff	2014-08-27 22:15:05 UTC (rev 6258)
+++ glibc-package/trunk/debian/patches/hurd-i386/submitted-bind_umask.diff	2014-08-27 22:56:00 UTC (rev 6259)
@@ -1,76 +0,0 @@
-2014-08-27  Samuel Thibault  <samuel.thibault@ens-lyon.org>
-
-	Simplify atomicity of socket creation in bind.
-
-        * sysdeps/mach/hurd/bind.c (__bind): Use dir_lookup(node, "") instead of
-        looking up the name after linking the file.
-
----
- bind.c |   48 +++++++++++++++++++++++++-----------------------
- 1 file changed, 25 insertions(+), 23 deletions(-)
-
---- a/sysdeps/mach/hurd/bind.c
-+++ b/sysdeps/mach/hurd/bind.c
-@@ -40,7 +40,7 @@ __bind  (int fd, __CONST_SOCKADDR_ARG ad
-       char *name = _hurd_sun_path_dupa (addr, len);
-       /* For the local domain, we must create a node in the filesystem
- 	 using the ifsock translator and then fetch the address from it.  */
--      file_t dir, node;
-+      file_t dir, node, ifsock;
-       char *n;
- 
-       dir = __file_name_split (name, &n);
-@@ -61,36 +61,32 @@ __bind  (int fd, __CONST_SOCKADDR_ARG ad
- 				       MACH_MSG_TYPE_COPY_SEND);
- 	  if (! err)
- 	    {
--	      /* Link the node, now a socket, into the target directory.  */
--	      err = __dir_link (dir, node, n, 1);
--	      if (err == EEXIST)
-+	      enum retry_type doretry;
-+	      char retryname[1024];
-+	      /* Get a port to the ifsock translator.  */
-+	      err = __dir_lookup (node, "", 0, 0, &doretry, retryname, &ifsock);
-+	      if (! err && (doretry != FS_RETRY_NORMAL || retryname[0] != '\0'))
- 		err = EADDRINUSE;
- 	    }
--	  __mach_port_deallocate (__mach_task_self (), node);
- 	  if (! err)
- 	    {
--	      /* Get a port to the ifsock translator.  */
--	      file_t ifsock = __file_name_lookup_under (dir, n, 0, 0);
--	      if (ifsock == MACH_PORT_NULL)
-+	      /* Get the address port.  */
-+	      err = __ifsock_getsockaddr (ifsock, &aport);
-+	      if (err == MIG_BAD_ID || err == EOPNOTSUPP)
-+		err = EGRATUITOUS;
-+	      if (! err)
- 		{
--		  err = errno;
--		  /* If we failed, get rid of the node we created.  */
--		  __dir_unlink (dir, n);
--		}
--	      else
--		{
--		  /* Get the address port.  */
--		  err = __ifsock_getsockaddr (ifsock, &aport);
--		  if (err == MIG_BAD_ID || err == EOPNOTSUPP)
--		    /* We are not talking to /hurd/ifsock.  Probably
--		       someone came in after we linked our node, unlinked
--		       it, and replaced it with a different node, before we
--		       did our lookup.  Treat it as if our link had failed
--		       with EEXIST.  */
-+		  /* Link the node, now a socket with proper mode, into the
-+		     target directory.  */
-+		  err = __dir_link (dir, node, n, 1);
-+		  if (err == EEXIST)
- 		    err = EADDRINUSE;
-+		  if (err)
-+		    __mach_port_deallocate (__mach_task_self (), aport);
- 		}
- 	      __mach_port_deallocate (__mach_task_self (), ifsock);
- 	    }
-+	  __mach_port_deallocate (__mach_task_self (), node);
- 	}
-       __mach_port_deallocate (__mach_task_self (), dir);
- 

Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series	2014-08-27 22:15:05 UTC (rev 6258)
+++ glibc-package/trunk/debian/patches/series	2014-08-27 22:56:00 UTC (rev 6259)
@@ -149,7 +149,7 @@
 hurd-i386/cvs-munmap-0.diff
 hurd-i386/cvs-libpthread_guardsize.diff
 hurd-i386/cvs-libpthread_std_thread.diff
-hurd-i386/submitted-bind_umask.diff
+hurd-i386/cvs-bind_umask.diff
 hurd-i386/submitted-bind_umask2.diff
 
 i386/local-biarch.diff


Reply to: