Revert r74780: it indeed works here, but when the problem happens in other places (it does!)
where it cannot be solved that way, we're doomed. It will be required to find an appropriate solution...

CORE-4375

svn path=/trunk/; revision=74805
This commit is contained in:
Pierre Schweitzer 2017-06-03 21:50:29 +00:00
parent 6045d865f8
commit 52d2b0fff1

View file

@ -1109,6 +1109,7 @@ UDFQueueDelayedClose(
{
PtrUDFIrpContextLite IrpContextLite;
BOOLEAN StartWorker = FALSE;
BOOLEAN AcquiredVcb = FALSE;
NTSTATUS RC;
AdPrint((" UDFQueueDelayedClose\n"));
@ -1118,6 +1119,7 @@ UDFQueueDelayedClose(
UDFAcquireResourceExclusive(&(UDFGlobalData.DelayedCloseResource), TRUE);
UDFAcquireResourceShared(&(Fcb->Vcb->VCBResource), TRUE);
AcquiredVcb = TRUE;
if(Fcb->FCBFlags & UDF_FCB_DELETE_ON_CLOSE) {
try_return(RC = STATUS_DELETE_PENDING);
@ -1181,7 +1183,9 @@ try_exit: NOTHING;
if(!NT_SUCCESS(RC)) {
Fcb->FCBFlags &= ~UDF_FCB_DELAY_CLOSE;
}
UDFReleaseResource(&(Fcb->Vcb->VCBResource));
if(AcquiredVcb) {
UDFReleaseResource(&(Fcb->Vcb->VCBResource));
}
// Release DelayedCloseResource
UDFReleaseResource(&(UDFGlobalData.DelayedCloseResource));
} _SEH2_END;