From: Michael Meffie Date: Thu, 24 Apr 2014 17:40:06 +0000 (-0400) Subject: libafs: fix lock leak during shutdown X-Git-Tag: upstream/1.8.0_pre1^2~714 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=a111d0db7768e0ab924f51666d626ddb3e25ca38;p=packages%2Fo%2Fopenafs.git libafs: fix lock leak during shutdown afs_getattr returns EIO when afs is in the process of shutting down. Be sure to unlock the locks taken before returning. The bozon lock leak has been present since IBM AFS. Change-Id: Id3e330c458996abf1519de6364060cc0b8828e6a Reviewed-on: http://gerrit.openafs.org/11096 Tested-by: BuildBot Reviewed-by: Perry Ruiter Reviewed-by: Chas Williams - CONTRACTOR Reviewed-by: Jeffrey Altman --- diff --git a/src/afs/VNOPS/afs_vnop_attrs.c b/src/afs/VNOPS/afs_vnop_attrs.c index 854f4ee81..c25e90d84 100644 --- a/src/afs/VNOPS/afs_vnop_attrs.c +++ b/src/afs/VNOPS/afs_vnop_attrs.c @@ -239,8 +239,13 @@ afs_getattr(OSI_VC_DECL(avc), struct vattr *attrs, afs_ucred_t *acred) afs_BozonLock(&avc->pvnLock, avc); #endif - if (afs_shuttingdown) + if (afs_shuttingdown) { +#ifdef AFS_BOZONLOCK_ENV + afs_BozonUnlock(&avc->pvnLock, avc); +#endif + AFS_DISCON_UNLOCK(); return EIO; + } if (!(avc->f.states & CStatd)) { if (!(code = afs_InitReq(&treq, acred))) {