mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-29 12:23:30 +00:00
[NPFS]
- Fix several cancellation races and broken checks svn path=/trunk/; revision=54327
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user