mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-22 16:33:02 -05:00
sys: lockctl: fix hang uncovered by IFSTEST
This commit is contained in:
parent
f1ee19d8dc
commit
2d9b1b80fa
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user