From 764b7727318daa7c2c67b6e193a3ac9a3de75305 Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Sat, 12 Nov 2016 18:01:27 -0800 Subject: [PATCH] sys: lockctl, read, write: oplocks --- src/sys/lockctl.c | 2 +- src/sys/read.c | 4 ++-- src/sys/write.c | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) 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;