summaryrefslogtreecommitdiff
path: root/debian/patches/fixes0004-Avoid-superfluous-locking-of-node.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/fixes0004-Avoid-superfluous-locking-of-node.patch')
-rw-r--r--debian/patches/fixes0004-Avoid-superfluous-locking-of-node.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/debian/patches/fixes0004-Avoid-superfluous-locking-of-node.patch b/debian/patches/fixes0004-Avoid-superfluous-locking-of-node.patch
new file mode 100644
index 00000000..db4187ed
--- /dev/null
+++ b/debian/patches/fixes0004-Avoid-superfluous-locking-of-node.patch
@@ -0,0 +1,60 @@
+From 14647f8d3daeb5e18d77b40fd1d0c48e034903b5 Mon Sep 17 00:00:00 2001
+From: Justus Winter <justus@gnupg.org>
+Date: Mon, 25 Apr 2016 00:54:08 +0200
+Subject: [PATCH hurd 4/5] Avoid superfluous locking of node
+
+* libdiskfs/io-restrict-auth.c (diskfs_S_io_restrict_auth): Do not
+lock the associated node. No operation here needs synchronization.
+* libnetfs/io-restrict-auth.c (netfs_S_io_restrict_auth): Likewise.
+---
+ libdiskfs/io-restrict-auth.c | 2 --
+ libnetfs/io-restrict-auth.c | 3 ---
+ 2 files changed, 5 deletions(-)
+
+diff --git a/libdiskfs/io-restrict-auth.c b/libdiskfs/io-restrict-auth.c
+index 80c0b20..1c2c999 100644
+--- a/libdiskfs/io-restrict-auth.c
++++ b/libdiskfs/io-restrict-auth.c
+@@ -40,7 +40,6 @@ diskfs_S_io_restrict_auth (struct protid *cred,
+ if (err)
+ return err;
+
+- pthread_mutex_lock (&cred->po->np->lock);
+ refcount_ref (&cred->po->refcnt);
+ err = diskfs_create_protid (cred->po, user, &newpi);
+ if (! err)
+@@ -51,7 +50,6 @@ diskfs_S_io_restrict_auth (struct protid *cred,
+ }
+ else
+ refcount_deref (&cred->po->refcnt);
+- pthread_mutex_unlock (&cred->po->np->lock);
+
+ iohelp_free_iouser (user);
+ return err;
+diff --git a/libnetfs/io-restrict-auth.c b/libnetfs/io-restrict-auth.c
+index 79b7d09..89df671 100644
+--- a/libnetfs/io-restrict-auth.c
++++ b/libnetfs/io-restrict-auth.c
+@@ -42,19 +42,16 @@ netfs_S_io_restrict_auth (struct protid *user,
+ if (err)
+ return err;
+
+- pthread_mutex_lock (&user->po->np->lock);
+ refcount_ref (&user->po->refcnt);
+ newpi = netfs_make_protid (user->po, new_user);
+ if (newpi)
+ {
+ *newport = ports_get_right (newpi);
+- pthread_mutex_unlock (&user->po->np->lock);
+ *newporttype = MACH_MSG_TYPE_MAKE_SEND;
+ }
+ else
+ {
+ refcount_deref (&user->po->refcnt);
+- pthread_mutex_unlock (&user->po->np->lock);
+ iohelp_free_iouser (new_user);
+ err = ENOMEM;
+ }
+--
+2.1.4
+