diff --git "a/ntoskrnl/fsrtl/fastio.c" "b/ntoskrnl/fsrtl/fastio.c" index 8e19b2d77a9..ecc0b2a0461 100644 --- "a/ntoskrnl/fsrtl/fastio.c" +++ "b/ntoskrnl/fsrtl/fastio.c" @@ -1605,7 +1605,11 @@ FsRtlAcquireFileExclusiveCommon(IN PFILE_OBJECT FileObject, FilterCallbacks->PostAcquireForSectionSynchronization(&CbData, Status, CompletionContext); } - return Status; + /* Do not return now. We must acquire the file's resource before leaving. */ + if (Status == STATUS_FILE_LOCKED_WITH_ONLY_READERS || + Status == STATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY || + Status == STATUS_FILE_LOCKED_WITH_WRITERS) + return Status; } FastDispatch = DeviceObject->DriverObject->FastIoDispatch;