From 3c57bab34ee74b4951cf637537ff73d86986fd3e Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Mon, 22 Oct 2012 20:34:59 -0400 Subject: [PATCH] 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 --- src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp | 6 ++++-- src/WINNT/afsrdr/kernel/lib/AFSWorker.cpp | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp b/src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp index c8c207bac..a5c298400 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 6d649bf61..cf28e9f45 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) { -- 2.39.5