sys: lockctl: fix hang uncovered by IFSTEST

This commit is contained in:
Bill Zissimopoulos 2016-12-16 16:31:00 -08:00
parent f1ee19d8dc
commit 2d9b1b80fa
2 changed files with 6 additions and 4 deletions

View File

@ -1782,7 +1782,6 @@ NTSTATUS FspFileNodeProcessLockIrp(FSP_FILE_NODE *FileNode, PIRP Irp)
PAGED_CODE(); PAGED_CODE();
IoMarkIrpPending(Irp); IoMarkIrpPending(Irp);
FspFileNodeSetOwnerF(FileNode, FspIrpFlags(Irp), Irp);
try try
{ {
@ -1803,11 +1802,8 @@ static NTSTATUS FspFileNodeCompleteLockIrp(PVOID Context, PIRP Irp)
{ {
PAGED_CODE(); PAGED_CODE();
FSP_FILE_NODE *FileNode = Context;
NTSTATUS Result = Irp->IoStatus.Status; NTSTATUS Result = Irp->IoStatus.Status;
FspFileNodeReleaseOwnerF(FileNode, FspIrpFlags(Irp), Irp);
DEBUGLOGIRP(Irp, Result); DEBUGLOGIRP(Irp, Result);
FspIopCompleteIrp(Irp, Result); FspIopCompleteIrp(Irp, Result);

View File

@ -61,8 +61,14 @@ static NTSTATUS FspFsvolLockControlRetry(
return Result; return Result;
} }
ULONG IrpFlags = FspIrpFlags(Irp);
IoSetTopLevelIrp(0);
/* let the FSRTL package handle this one! */ /* let the FSRTL package handle this one! */
Result = FspFileNodeProcessLockIrp(FileNode, Irp); Result = FspFileNodeProcessLockIrp(FileNode, Irp);
ASSERT(STATUS_PENDING == Result);
FspFileNodeReleaseF(FileNode, IrpFlags);
return Result; return Result;
} }