diff --git a/src/sys/lockctl.c b/src/sys/lockctl.c index d99e040d..c4f2ef4e 100644 --- a/src/sys/lockctl.c +++ b/src/sys/lockctl.c @@ -52,7 +52,7 @@ static NTSTATUS FspFsvolLockControlRetry( /* perform oplock check; we are only implementing Win7 behavior */ Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp, (PVOID)(UINT_PTR)FspFsvolLockControlRetry, FspWqOplockComplete, FspWqOplockPrepare); - if (STATUS_PENDING == Result) + if (!NT_SUCCESS(Result) || STATUS_PENDING == Result) { FspFileNodeRelease(FileNode, Main); return Result; diff --git a/src/sys/read.c b/src/sys/read.c index 6dce513c..8162c0f1 100644 --- a/src/sys/read.c +++ b/src/sys/read.c @@ -119,7 +119,7 @@ static NTSTATUS FspFsvolReadCached( /* perform oplock check */ Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp, (PVOID)(UINT_PTR)FspFsvolReadCached, FspWqOplockComplete, FspWqOplockPrepare); - if (STATUS_PENDING == Result) + if (!NT_SUCCESS(Result) || STATUS_PENDING == Result) { FspFileNodeRelease(FileNode, Main); return Result; @@ -250,7 +250,7 @@ static NTSTATUS FspFsvolReadNonCached( { Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp, (PVOID)(UINT_PTR)FspFsvolReadNonCached, FspWqOplockComplete, FspWqOplockPrepare); - if (STATUS_PENDING == Result) + if (!NT_SUCCESS(Result) || STATUS_PENDING == Result) { FspFileNodeRelease(FileNode, Full); return Result; diff --git a/src/sys/write.c b/src/sys/write.c index b66b132b..50a557ac 100644 --- a/src/sys/write.c +++ b/src/sys/write.c @@ -143,7 +143,7 @@ static NTSTATUS FspFsvolWriteCached( /* perform oplock check */ Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp, (PVOID)(UINT_PTR)FspFsvolWriteCached, FspWqOplockComplete, FspWqOplockPrepare); - if (STATUS_PENDING == Result) + if (!NT_SUCCESS(Result) || STATUS_PENDING == Result) { FspFileNodeRelease(FileNode, Main); return Result; @@ -320,7 +320,7 @@ static NTSTATUS FspFsvolWriteNonCached( { Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp, (PVOID)(UINT_PTR)FspFsvolWriteNonCached, FspWqOplockComplete, FspWqOplockPrepare); - if (STATUS_PENDING == Result) + if (!NT_SUCCESS(Result) || STATUS_PENDING == Result) { FspFileNodeRelease(FileNode, Full); return Result;