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();
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);

View File

@ -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;
}