From: Rainer Toebbicke Date: Fri, 27 Nov 2009 14:03:25 +0000 (+0100) Subject: Avoid IHandle leak when failing to attach volume X-Git-Tag: debian/1.4.11+dfsg-6~9 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=b68257bd7ab5b9a359899d593f3509e08daee538;p=packages%2Fo%2Fopenafs.git 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 --- 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);