summaryrefslogtreecommitdiff
path: root/libnetfs/io-reauthenticate.c
diff options
context:
space:
mode:
authorFlavio Cruz <flaviocruz@gmail.com>2016-02-07 01:33:00 -0500
committerJustus Winter <4winter@informatik.uni-hamburg.de>2016-02-07 15:42:23 +0100
commitafea5285b0e40b68f97b47f0f0edc471b554fb34 (patch)
treed050d0e9738372db680d1d4036c63bd7d6de6cfb /libnetfs/io-reauthenticate.c
parent35ae0168bbdae2eb7029262f49d394046a67860f (diff)
Use refcount_t for peropen reference counting in libnetfs.
* libnetfs/netfs.h: Use refcount_t. * libnetfs/make-peropen.c: Initialize to 1 with refcount_init just like in libdiskfs. * libnetfs/make-protid.c: Don't increment the count here. Do it like libdiskfs. * libnetfs/io-duplicate.c: Add refcount_ref since netfs_make_protid no longer increments the refcount. * libnetfs/io-reauthenticate.c: Likewise. * libnetfs/io-restrict-auth.c: Likewise. * libnetfs/release-peropen.c: Dereference without locking.
Diffstat (limited to 'libnetfs/io-reauthenticate.c')
-rw-r--r--libnetfs/io-reauthenticate.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/libnetfs/io-reauthenticate.c b/libnetfs/io-reauthenticate.c
index 8ff4182b..b2d4a440 100644
--- a/libnetfs/io-reauthenticate.c
+++ b/libnetfs/io-reauthenticate.c
@@ -34,12 +34,14 @@ netfs_S_io_reauthenticate (struct protid *user, mach_port_t rend_port)
/* This routine must carefully ignore EINTR because we
are a simpleroutine, so callers won't know to restart. */
+ refcount_ref (&user->po->refcnt);
pthread_mutex_lock (&user->po->np->lock);
do
newpi = netfs_make_protid (user->po, 0);
while (! newpi && errno == EINTR);
if (! newpi)
{
+ refcount_deref (&user->po->refcnt);
pthread_mutex_unlock (&user->po->np->lock);
return errno;
}