diff --git a/src/sys/file.c b/src/sys/file.c index f2055a84..fbbe911d 100644 --- a/src/sys/file.c +++ b/src/sys/file.c @@ -1782,7 +1782,6 @@ NTSTATUS FspFileNodeProcessLockIrp(FSP_FILE_NODE *FileNode, PIRP Irp) PAGED_CODE(); IoMarkIrpPending(Irp); - FspFileNodeSetOwnerF(FileNode, FspIrpFlags(Irp), Irp); try { @@ -1803,11 +1802,8 @@ static NTSTATUS FspFileNodeCompleteLockIrp(PVOID Context, PIRP Irp) { PAGED_CODE(); - FSP_FILE_NODE *FileNode = Context; NTSTATUS Result = Irp->IoStatus.Status; - FspFileNodeReleaseOwnerF(FileNode, FspIrpFlags(Irp), Irp); - DEBUGLOGIRP(Irp, Result); FspIopCompleteIrp(Irp, Result); diff --git a/src/sys/lockctl.c b/src/sys/lockctl.c index ba466691..80801cbb 100644 --- a/src/sys/lockctl.c +++ b/src/sys/lockctl.c @@ -61,8 +61,14 @@ static NTSTATUS FspFsvolLockControlRetry( return Result; } + ULONG IrpFlags = FspIrpFlags(Irp); + IoSetTopLevelIrp(0); + /* let the FSRTL package handle this one! */ Result = FspFileNodeProcessLockIrp(FileNode, Irp); + ASSERT(STATUS_PENDING == Result); + + FspFileNodeReleaseF(FileNode, IrpFlags); return Result; }