mirror of
https://github.com/reactos/reactos.git
synced 2024-07-06 20:55:16 +00:00
[NPFS]
- Fix several cancellation races and broken checks svn path=/trunk/; revision=54327
This commit is contained in:
parent
784e19a384
commit
3eff89fe04
|
@ -133,9 +133,11 @@ NpfsFindListeningServerInstance(PNPFS_FCB Fcb)
|
|||
IoAcquireCancelSpinLock(&oldIrql);
|
||||
if (!Irp->Cancel)
|
||||
{
|
||||
(void)IoSetCancelRoutine(Irp, NULL);
|
||||
IoReleaseCancelSpinLock(oldIrql);
|
||||
return Waiter->Ccb;
|
||||
if (IoSetCancelRoutine(Irp, NULL) != NULL)
|
||||
{
|
||||
IoReleaseCancelSpinLock(oldIrql);
|
||||
return Waiter->Ccb;
|
||||
}
|
||||
}
|
||||
IoReleaseCancelSpinLock(oldIrql);
|
||||
}
|
||||
|
@ -868,11 +870,7 @@ NpfsCleanup(PDEVICE_OBJECT DeviceObject,
|
|||
RemoveEntryList(Entry);
|
||||
tmpIrp = CONTAINING_RECORD(WaitEntry, IRP, Tail.Overlay.DriverContext);
|
||||
IoAcquireCancelSpinLock(&oldIrql);
|
||||
if (!tmpIrp->Cancel)
|
||||
{
|
||||
(void)IoSetCancelRoutine(tmpIrp, NULL);
|
||||
Complete = TRUE;
|
||||
}
|
||||
Complete = (NULL != IoSetCancelRoutine(tmpIrp, NULL));
|
||||
IoReleaseCancelSpinLock(oldIrql);
|
||||
if (Complete)
|
||||
{
|
||||
|
|
|
@ -57,12 +57,11 @@ NpfsAddListeningServerInstance(PIRP Irp,
|
|||
|
||||
KeLockMutex(&Ccb->Fcb->CcbListLock);
|
||||
|
||||
IoMarkIrpPending(Irp);
|
||||
InsertTailList(&Ccb->Fcb->WaiterListHead, &Entry->Entry);
|
||||
|
||||
IoAcquireCancelSpinLock(&oldIrql);
|
||||
if (!Irp->Cancel)
|
||||
{
|
||||
IoMarkIrpPending(Irp);
|
||||
InsertTailList(&Ccb->Fcb->WaiterListHead, &Entry->Entry);
|
||||
(void)IoSetCancelRoutine(Irp, NpfsListeningCancelRoutine);
|
||||
IoReleaseCancelSpinLock(oldIrql);
|
||||
KeUnlockMutex(&Ccb->Fcb->CcbListLock);
|
||||
|
@ -289,7 +288,7 @@ NpfsDisconnectPipe(PNPFS_CCB Ccb)
|
|||
{
|
||||
RemoveEntryList(Entry);
|
||||
Irp = CONTAINING_RECORD(Entry, IRP, Tail.Overlay.DriverContext);
|
||||
Complete = (NULL == IoSetCancelRoutine(Irp, NULL));
|
||||
Complete = (NULL != IoSetCancelRoutine(Irp, NULL));
|
||||
break;
|
||||
}
|
||||
Entry = Entry->Flink;
|
||||
|
|
Loading…
Reference in a new issue