From 6dd6ec6b4700d5430471e596dbee0f59db2f047e Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Mon, 18 Apr 2016 12:13:33 -0700 Subject: [PATCH] sys: FspReleaseForCcFlush: another bug fix for crazy NTOS semantics on this callback --- src/sys/callbacks.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/sys/callbacks.c b/src/sys/callbacks.c index 525d8c35..d07eee3d 100644 --- a/src/sys/callbacks.c +++ b/src/sys/callbacks.c @@ -171,11 +171,11 @@ NTSTATUS FspReleaseForCcFlush( PIRP TopLevelIrp = IoGetTopLevelIrp(); ULONG TopFlags; - ASSERT((PIRP)FSRTL_CACHE_TOP_LEVEL_IRP == TopLevelIrp || - (PIRP)FSRTL_MAX_TOP_LEVEL_IRP_FLAG < TopLevelIrp); - if ((PIRP)FSRTL_CACHE_TOP_LEVEL_IRP == TopLevelIrp) + if ((PIRP)FSRTL_MAX_TOP_LEVEL_IRP_FLAG >= TopLevelIrp) { - IoSetTopLevelIrp(FileNode->Tls.CcFlush.TopLevelIrp); + ASSERT(0 == TopLevelIrp || (PIRP)FSRTL_CACHE_TOP_LEVEL_IRP == TopLevelIrp); + if ((PIRP)FSRTL_CACHE_TOP_LEVEL_IRP == TopLevelIrp) + IoSetTopLevelIrp(FileNode->Tls.CcFlush.TopLevelIrp); FileNode->Tls.CcFlush.TopLevelIrp = 0; FspFileNodeRelease(FileNode, Full); }