mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-23 00:43:00 -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();
|
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);
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user