From: Jeffrey Altman Date: Tue, 23 Oct 2012 00:34:59 +0000 (-0400) Subject: Windows: AFSFlushExtents QueuedFlushCount leak X-Git-Tag: openafs-stable-1_8_0pre1~1886 X-Git-Url: https://git.openafs.org/?p=openafs.git;a=commitdiff_plain;h=3c57bab34ee74b4951cf637537ff73d86986fd3e;hp=651cceabc3e5f939554e50437b9ed3181b6f7b1f Windows: AFSFlushExtents QueuedFlushCount leak The FCB QueuedFlushCount was decremented in all code paths but only incremented if the AuthGroup acquisition succeeded. Increment the counter before the AuthGroup checks. Change-Id: I3f58075124412cc4a7ac63dc6a7f90a91af369cf Reviewed-on: http://gerrit.openafs.org/8303 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- diff --git a/src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp b/src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp index c8c207b..a5c2984 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp @@ -2585,6 +2585,8 @@ AFSFlushExtents( IN AFSFcb *Fcb, __Enter { + lCount = InterlockedIncrement( &Fcb->Specific.File.QueuedFlushCount); + if( pAuthGroup == NULL || RtlCompareMemory( pAuthGroup, &Fcb->NPFcb->Specific.File.ExtentsRequestAuthGroup, @@ -2616,8 +2618,6 @@ AFSFlushExtents( IN AFSFcb *Fcb, bExtentsLocked = TRUE; - lCount = InterlockedIncrement( &Fcb->Specific.File.QueuedFlushCount); - // // Clear our queued flush event // @@ -2815,6 +2815,8 @@ try_exit: lCount = InterlockedDecrement( &Fcb->Specific.File.QueuedFlushCount); + ASSERT( lCount >= 0); + if( lCount == 0) { diff --git a/src/WINNT/afsrdr/kernel/lib/AFSWorker.cpp b/src/WINNT/afsrdr/kernel/lib/AFSWorker.cpp index 6d649bf..cf28e9f 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSWorker.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSWorker.cpp @@ -2258,6 +2258,8 @@ try_exit: lCount = InterlockedDecrement( &Fcb->Specific.File.QueuedFlushCount); + ASSERT( lCount >= 0); + if( lCount == 0) {