[arch-commits] Commit in lib32-libtirpc/repos (3 files)
Maxime Gauduin
alucryd at archlinux.org
Sat Nov 7 13:03:15 UTC 2015
Date: Saturday, November 7, 2015 @ 14:03:15
Author: alucryd
Revision: 146376
archrelease: copy trunk to multilib-testing-x86_64
Added:
lib32-libtirpc/repos/multilib-testing-x86_64/
lib32-libtirpc/repos/multilib-testing-x86_64/PKGBUILD
(from rev 146375, lib32-libtirpc/trunk/PKGBUILD)
lib32-libtirpc/repos/multilib-testing-x86_64/add_missing_rwlock_unlocks_in_xprt_register.diff
(from rev 146375, lib32-libtirpc/trunk/add_missing_rwlock_unlocks_in_xprt_register.diff)
--------------------------------------------------+
PKGBUILD | 53 ++++++++++++++++++
add_missing_rwlock_unlocks_in_xprt_register.diff | 61 +++++++++++++++++++++
2 files changed, 114 insertions(+)
Copied: lib32-libtirpc/repos/multilib-testing-x86_64/PKGBUILD (from rev 146375, lib32-libtirpc/trunk/PKGBUILD)
===================================================================
--- multilib-testing-x86_64/PKGBUILD (rev 0)
+++ multilib-testing-x86_64/PKGBUILD 2015-11-07 13:03:15 UTC (rev 146376)
@@ -0,0 +1,53 @@
+# $Id$
+# Maintainer: Maxime Gauduin <alucryd at archlinux.org>
+# Contributor: jtts <jussaar at mbnet.fi>
+# Contributor: Tom Gundersen <teg at jklm.no>
+# Contributor: Tobias Powalowski <tpowa at archlinux.org>
+# Contributor: Franco Tortoriello <franco.tortoriello at gmail.com>
+# Contributor: josephgbr <rafael.f.f1 at gmail.com>
+
+pkgname=lib32-libtirpc
+pkgver=1.0.1
+pkgrel=1
+pkgdesc='Transport Independent RPC library (SunRPC replacement)'
+arch=('x86_64')
+url='http://libtirpc.sourceforge.net/'
+license=('BSD')
+depends=('lib32-krb5' 'libtirpc')
+makedepends=('gcc-multilib')
+source=("http://downloads.sourceforge.net/sourceforge/libtirpc/libtirpc-${pkgver}.tar.bz2"
+ 'add_missing_rwlock_unlocks_in_xprt_register.diff')
+sha256sums=('5156974f31be7ccbc8ab1de37c4739af6d9d42c87b1d5caf4835dda75fcbb89e'
+ '8bcdbd700ec6f8b5f87881251f9851174df233975d95a8dfdf7359f057fb3b80')
+
+prepare() {
+ cd libtirpc-${pkgver}
+
+ patch -Np1 -i ../add_missing_rwlock_unlocks_in_xprt_register.diff
+}
+
+build() {
+ cd libtirpc-${pkgver}
+
+ export CC='gcc -m32'
+ export CXX='g++ -m32'
+ export PKG_CONFIG_PATH='/usr/lib32/pkgconfig'
+
+ ./configure \
+ --prefix='/usr' \
+ --libdir='/usr/lib32' \
+ --sysconfdir='/etc'
+ make
+}
+
+package() {
+ cd libtirpc-${pkgver}
+
+ make DESTDIR="${pkgdir}" install
+ rm -rf "${pkgdir}"/{etc,usr/{include,share}}
+
+ install -dm 755 "${pkgdir}"/usr/share/licenses
+ ln -s libtirpc "${pkgdir}"/usr/share/licenses/${pkgname}
+}
+
+# vim: ts=2 sw=2 et:
Copied: lib32-libtirpc/repos/multilib-testing-x86_64/add_missing_rwlock_unlocks_in_xprt_register.diff (from rev 146375, lib32-libtirpc/trunk/add_missing_rwlock_unlocks_in_xprt_register.diff)
===================================================================
--- multilib-testing-x86_64/add_missing_rwlock_unlocks_in_xprt_register.diff (rev 0)
+++ multilib-testing-x86_64/add_missing_rwlock_unlocks_in_xprt_register.diff 2015-11-07 13:03:15 UTC (rev 146376)
@@ -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