From e5a2f955c782ee46d1b24671fd0bac555e11d1a8 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Tue, 3 Jan 2012 23:12:34 -0500 Subject: [PATCH] Windows: do not flush dirty extents without permission When closing file handles, do not permit dirty extents to be released back to the service if the current handle (Ccb) does not have write permission. The cleanup operation will fail with STATUS_ACCESS_DENIED, the extents will be released and all of the dirty data will be discarded. Change-Id: Iceacf5319147d1bd6277ea160bc67d91f1a49d5b Reviewed-on: http://gerrit.openafs.org/6500 Tested-by: BuildBot Reviewed-by: Peter Scott Reviewed-by: Jeffrey Altman --- src/WINNT/afsrdr/kernel/lib/AFSClose.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/WINNT/afsrdr/kernel/lib/AFSClose.cpp b/src/WINNT/afsrdr/kernel/lib/AFSClose.cpp index 938288f60..e1a37bf76 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSClose.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSClose.cpp @@ -510,15 +510,13 @@ AFSClose( IN PDEVICE_OBJECT LibDeviceObject, else { - if( pFcb->Header.NodeTypeCode == AFS_FILE_FCB) + if( pFcb->Header.NodeTypeCode == AFS_FILE_FCB && + pFcb->Specific.File.ExtentsDirtyCount && + (pCcb->GrantedAccess & FILE_WRITE_DATA)) { - if( pFcb->Specific.File.ExtentsDirtyCount) - { - - AFSFlushExtents( pFcb, - &pCcb->AuthGroup); - } + AFSFlushExtents( pFcb, + &pCcb->AuthGroup); } AFSReleaseResource( &pFcb->NPFcb->Resource); -- 2.39.5