From b68257bd7ab5b9a359899d593f3509e08daee538 Mon Sep 17 00:00:00 2001 From: Rainer Toebbicke Date: Fri, 27 Nov 2009 15:03:25 +0100 Subject: [PATCH] Avoid IHandle leak when failing to attach volume When a volume fails to attach, ensure it's volume handles get released before all traces of it are erased. Failure to do so might cause problems once the volume is salvaged and re-attached. VReleaseVolumeHandles_r is moved to FreeVolume and no longer called separately. Change-Id: I2366f13fd9daa6eb8ce3b4240bb1534f14f706c4 Reviewed-on: http://gerrit.openafs.org/874 Tested-by: Derrick Brashear Reviewed-by: Derrick Brashear --- src/vol/volume.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/vol/volume.c b/src/vol/volume.c index 2d20c0686..887f8dd9a 100644 --- a/src/vol/volume.c +++ b/src/vol/volume.c @@ -1099,7 +1099,6 @@ VPutVolume_r(register Volume * vp) #endif /* AFS_PTHREAD_ENV */ } if (vp->shuttingDown) { - VReleaseVolumeHandles_r(vp); FreeVolume(vp); if (programType == fileServer) #ifdef AFS_PTHREAD_ENV @@ -1275,8 +1274,6 @@ VForceOffline_r(Volume * vp) LWP_NoYieldSignal(VPutVolume); #endif /* AFS_PTHREAD_ENV */ - VReleaseVolumeHandles_r(vp); - } void @@ -1575,6 +1572,7 @@ FreeVolume(Volume * vp) for (i = 0; i < nVNODECLASSES; i++) if (vp->vnodeIndex[i].bitmap) free(vp->vnodeIndex[i].bitmap); + VReleaseVolumeHandles_r(vp); FreeVolumeHeader(vp); DeleteVolumeFromHashTable(vp); free(vp); -- 2.39.5