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: