[arch-commits] Commit in libtirpc/repos (6 files)

Andreas Radke andyrtr at archlinux.org
Fri Nov 6 18:31:29 UTC 2015


    Date: Friday, November 6, 2015 @ 19:31:29
  Author: andyrtr
Revision: 250151

archrelease: copy trunk to staging-i686, staging-x86_64

Added:
  libtirpc/repos/staging-i686/PKGBUILD
    (from rev 250150, libtirpc/trunk/PKGBUILD)
  libtirpc/repos/staging-i686/add_missing_rwlock_unlocks_in_xprt_register.diff
    (from rev 250150, libtirpc/trunk/add_missing_rwlock_unlocks_in_xprt_register.diff)
  libtirpc/repos/staging-x86_64/PKGBUILD
    (from rev 250150, libtirpc/trunk/PKGBUILD)
  libtirpc/repos/staging-x86_64/add_missing_rwlock_unlocks_in_xprt_register.diff
    (from rev 250150, libtirpc/trunk/add_missing_rwlock_unlocks_in_xprt_register.diff)
Deleted:
  libtirpc/repos/staging-i686/PKGBUILD
  libtirpc/repos/staging-x86_64/PKGBUILD

-----------------------------------------------------------------+
 /PKGBUILD                                                       |   72 ++++++++++
 staging-i686/PKGBUILD                                           |   28 ---
 staging-i686/add_missing_rwlock_unlocks_in_xprt_register.diff   |   61 ++++++++
 staging-x86_64/PKGBUILD                                         |   28 ---
 staging-x86_64/add_missing_rwlock_unlocks_in_xprt_register.diff |   61 ++++++++
 5 files changed, 194 insertions(+), 56 deletions(-)

Deleted: staging-i686/PKGBUILD
===================================================================
--- staging-i686/PKGBUILD	2015-11-06 18:31:16 UTC (rev 250150)
+++ staging-i686/PKGBUILD	2015-11-06 18:31:29 UTC (rev 250151)
@@ -1,28 +0,0 @@
-# $Id$
-# Maintainer: Tom Gundersen <teg at jklm.no>
-# Contributor: Tobias Powalowski <tpowa at archlinux.org>
-
-pkgname=libtirpc
-pkgver=1.0.1
-pkgrel=1
-pkgdesc="Transport Independent RPC library (SunRPC replacement)"
-arch=('i686' 'x86_64')
-url="http://libtirpc.sourceforge.net/"
-license=('BSD')
-depends=('krb5')
-backup=('etc/netconfig')
-# git tree: git://linux-nfs.org/~steved/libtirpc
-source=(http://downloads.sourceforge.net/sourceforge/libtirpc/${pkgname}-${pkgver}.tar.bz2)
-sha1sums=('8da1636f98b5909c0d587e7534bc1e91f5c1a970')
-
-build() {
-  cd ${pkgname}-${pkgver}
-  ./configure --prefix=/usr --sysconf=/etc
-  make
-}
-
-package() {
-  cd ${pkgname}-${pkgver}
-  make DESTDIR="${pkgdir}" install
-  install -D -m644 COPYING "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
-}

Copied: libtirpc/repos/staging-i686/PKGBUILD (from rev 250150, libtirpc/trunk/PKGBUILD)
===================================================================
--- staging-i686/PKGBUILD	                        (rev 0)
+++ staging-i686/PKGBUILD	2015-11-06 18:31:29 UTC (rev 250151)
@@ -0,0 +1,36 @@
+# $Id$
+# Maintainer: Tom Gundersen <teg at jklm.no>
+# Contributor: Tobias Powalowski <tpowa at archlinux.org>
+
+pkgname=libtirpc
+pkgver=1.0.1
+pkgrel=2
+pkgdesc="Transport Independent RPC library (SunRPC replacement)"
+arch=('i686' 'x86_64')
+url="http://libtirpc.sourceforge.net/"
+license=('BSD')
+depends=('krb5')
+backup=('etc/netconfig')
+# git tree: git://linux-nfs.org/~steved/libtirpc
+source=(http://downloads.sourceforge.net/sourceforge/libtirpc/${pkgname}-${pkgver}.tar.bz2
+        add_missing_rwlock_unlocks_in_xprt_register.diff)
+sha1sums=('8da1636f98b5909c0d587e7534bc1e91f5c1a970'
+          'c451b0eb527098c0d9e308e4978866b7aaaf688e')
+
+prepare() {
+  cd ${pkgname}-${pkgver}
+  # upstream post release fix to properly work with rpcbind
+  patch -Np1 -i ../add_missing_rwlock_unlocks_in_xprt_register.diff
+}
+
+build() {
+  cd ${pkgname}-${pkgver}
+  ./configure --prefix=/usr --sysconf=/etc
+  make
+}
+
+package() {
+  cd ${pkgname}-${pkgver}
+  make DESTDIR="${pkgdir}" install
+  install -D -m644 COPYING "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
+}

Copied: libtirpc/repos/staging-i686/add_missing_rwlock_unlocks_in_xprt_register.diff (from rev 250150, libtirpc/trunk/add_missing_rwlock_unlocks_in_xprt_register.diff)
===================================================================
--- staging-i686/add_missing_rwlock_unlocks_in_xprt_register.diff	                        (rev 0)
+++ staging-i686/add_missing_rwlock_unlocks_in_xprt_register.diff	2015-11-06 18:31:29 UTC (rev 250151)
@@ -0,0 +1,61 @@
+From 4f1503e84b2f7bd229a097335e52fb8203f5bb0b Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney at mforney.org>
+Date: Wed, 4 Nov 2015 13:58:06 -0500
+Subject: [PATCH] Add missing rwlock_unlocks in xprt_register
+
+It looks like in b2c9430f46c4ac848957fb8adaac176a3f6ac03f when svc_run
+switched to poll, an early return was added, but the rwlock was not
+unlocked.
+
+I observed that rpcbind built against libtirpc-1.0.1 would handle only
+one request before hanging, and tracked it down to a missing
+rwlock_unlock here.
+
+Fixes: b2c9430f46c4 ('Use poll() instead of select() in svc_run()')
+Signed-off-by: Michael Forney <mforney at mforney.org>
+Signed-off-by: Steve Dickson <steved at redhat.com>
+---
+ src/svc.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/src/svc.c b/src/svc.c
+index 9c41445..b59467b 100644
+--- a/src/svc.c
++++ b/src/svc.c
+@@ -99,7 +99,7 @@ xprt_register (xprt)
+     {
+       __svc_xports = (SVCXPRT **) calloc (_rpc_dtablesize(), sizeof (SVCXPRT *));
+       if (__svc_xports == NULL)
+-	return;
++            goto unlock;
+     }
+   if (sock < _rpc_dtablesize())
+     {
+@@ -120,14 +120,14 @@ xprt_register (xprt)
+             svc_pollfd[i].fd = sock;
+             svc_pollfd[i].events = (POLLIN | POLLPRI |
+                                     POLLRDNORM | POLLRDBAND);
+-            return;
++            goto unlock;
+           }
+ 
+       new_svc_pollfd = (struct pollfd *) realloc (svc_pollfd,
+                                                   sizeof (struct pollfd)
+                                                   * (svc_max_pollfd + 1));
+       if (new_svc_pollfd == NULL) /* Out of memory */
+-        return;
++        goto unlock;
+       svc_pollfd = new_svc_pollfd;
+       ++svc_max_pollfd;
+ 
+@@ -135,6 +135,7 @@ xprt_register (xprt)
+       svc_pollfd[svc_max_pollfd - 1].events = (POLLIN | POLLPRI |
+                                                POLLRDNORM | POLLRDBAND);
+     }
++unlock:
+   rwlock_unlock (&svc_fd_lock);
+ }
+ 
+-- 
+1.8.2.1
+

Deleted: staging-x86_64/PKGBUILD
===================================================================
--- staging-x86_64/PKGBUILD	2015-11-06 18:31:16 UTC (rev 250150)
+++ staging-x86_64/PKGBUILD	2015-11-06 18:31:29 UTC (rev 250151)
@@ -1,28 +0,0 @@
-# $Id$
-# Maintainer: Tom Gundersen <teg at jklm.no>
-# Contributor: Tobias Powalowski <tpowa at archlinux.org>
-
-pkgname=libtirpc
-pkgver=1.0.1
-pkgrel=1
-pkgdesc="Transport Independent RPC library (SunRPC replacement)"
-arch=('i686' 'x86_64')
-url="http://libtirpc.sourceforge.net/"
-license=('BSD')
-depends=('krb5')
-backup=('etc/netconfig')
-# git tree: git://linux-nfs.org/~steved/libtirpc
-source=(http://downloads.sourceforge.net/sourceforge/libtirpc/${pkgname}-${pkgver}.tar.bz2)
-sha1sums=('8da1636f98b5909c0d587e7534bc1e91f5c1a970')
-
-build() {
-  cd ${pkgname}-${pkgver}
-  ./configure --prefix=/usr --sysconf=/etc
-  make
-}
-
-package() {
-  cd ${pkgname}-${pkgver}
-  make DESTDIR="${pkgdir}" install
-  install -D -m644 COPYING "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
-}

Copied: libtirpc/repos/staging-x86_64/PKGBUILD (from rev 250150, libtirpc/trunk/PKGBUILD)
===================================================================
--- staging-x86_64/PKGBUILD	                        (rev 0)
+++ staging-x86_64/PKGBUILD	2015-11-06 18:31:29 UTC (rev 250151)
@@ -0,0 +1,36 @@
+# $Id$
+# Maintainer: Tom Gundersen <teg at jklm.no>
+# Contributor: Tobias Powalowski <tpowa at archlinux.org>
+
+pkgname=libtirpc
+pkgver=1.0.1
+pkgrel=2
+pkgdesc="Transport Independent RPC library (SunRPC replacement)"
+arch=('i686' 'x86_64')
+url="http://libtirpc.sourceforge.net/"
+license=('BSD')
+depends=('krb5')
+backup=('etc/netconfig')
+# git tree: git://linux-nfs.org/~steved/libtirpc
+source=(http://downloads.sourceforge.net/sourceforge/libtirpc/${pkgname}-${pkgver}.tar.bz2
+        add_missing_rwlock_unlocks_in_xprt_register.diff)
+sha1sums=('8da1636f98b5909c0d587e7534bc1e91f5c1a970'
+          'c451b0eb527098c0d9e308e4978866b7aaaf688e')
+
+prepare() {
+  cd ${pkgname}-${pkgver}
+  # upstream post release fix to properly work with rpcbind
+  patch -Np1 -i ../add_missing_rwlock_unlocks_in_xprt_register.diff
+}
+
+build() {
+  cd ${pkgname}-${pkgver}
+  ./configure --prefix=/usr --sysconf=/etc
+  make
+}
+
+package() {
+  cd ${pkgname}-${pkgver}
+  make DESTDIR="${pkgdir}" install
+  install -D -m644 COPYING "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
+}

Copied: libtirpc/repos/staging-x86_64/add_missing_rwlock_unlocks_in_xprt_register.diff (from rev 250150, libtirpc/trunk/add_missing_rwlock_unlocks_in_xprt_register.diff)
===================================================================
--- staging-x86_64/add_missing_rwlock_unlocks_in_xprt_register.diff	                        (rev 0)
+++ staging-x86_64/add_missing_rwlock_unlocks_in_xprt_register.diff	2015-11-06 18:31:29 UTC (rev 250151)
@@ -0,0 +1,61 @@
+From 4f1503e84b2f7bd229a097335e52fb8203f5bb0b Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney at mforney.org>
+Date: Wed, 4 Nov 2015 13:58:06 -0500
+Subject: [PATCH] Add missing rwlock_unlocks in xprt_register
+
+It looks like in b2c9430f46c4ac848957fb8adaac176a3f6ac03f when svc_run
+switched to poll, an early return was added, but the rwlock was not
+unlocked.
+
+I observed that rpcbind built against libtirpc-1.0.1 would handle only
+one request before hanging, and tracked it down to a missing
+rwlock_unlock here.
+
+Fixes: b2c9430f46c4 ('Use poll() instead of select() in svc_run()')
+Signed-off-by: Michael Forney <mforney at mforney.org>
+Signed-off-by: Steve Dickson <steved at redhat.com>
+---
+ src/svc.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/src/svc.c b/src/svc.c
+index 9c41445..b59467b 100644
+--- a/src/svc.c
++++ b/src/svc.c
+@@ -99,7 +99,7 @@ xprt_register (xprt)
+     {
+       __svc_xports = (SVCXPRT **) calloc (_rpc_dtablesize(), sizeof (SVCXPRT *));
+       if (__svc_xports == NULL)
+-	return;
++            goto unlock;
+     }
+   if (sock < _rpc_dtablesize())
+     {
+@@ -120,14 +120,14 @@ xprt_register (xprt)
+             svc_pollfd[i].fd = sock;
+             svc_pollfd[i].events = (POLLIN | POLLPRI |
+                                     POLLRDNORM | POLLRDBAND);
+-            return;
++            goto unlock;
+           }
+ 
+       new_svc_pollfd = (struct pollfd *) realloc (svc_pollfd,
+                                                   sizeof (struct pollfd)
+                                                   * (svc_max_pollfd + 1));
+       if (new_svc_pollfd == NULL) /* Out of memory */
+-        return;
++        goto unlock;
+       svc_pollfd = new_svc_pollfd;
+       ++svc_max_pollfd;
+ 
+@@ -135,6 +135,7 @@ xprt_register (xprt)
+       svc_pollfd[svc_max_pollfd - 1].events = (POLLIN | POLLPRI |
+                                                POLLRDNORM | POLLRDBAND);
+     }
++unlock:
+   rwlock_unlock (&svc_fd_lock);
+ }
+ 
+-- 
+1.8.2.1
+



More information about the arch-commits mailing list