From a111d0db7768e0ab924f51666d626ddb3e25ca38 Mon Sep 17 00:00:00 2001 From: Michael Meffie Date: Thu, 24 Apr 2014 13:40:06 -0400 Subject: [PATCH] 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 --- src/afs/VNOPS/afs_vnop_attrs.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/afs/VNOPS/afs_vnop_attrs.c b/src/afs/VNOPS/afs_vnop_attrs.c index 854f4ee..c25e90d 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))) { -- 1.9.4