diff --git a/reactos/drivers/filesystems/npfs/create.c b/reactos/drivers/filesystems/npfs/create.c index 3b35bdacd5f..3be21ad2879 100644 --- a/reactos/drivers/filesystems/npfs/create.c +++ b/reactos/drivers/filesystems/npfs/create.c @@ -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) { diff --git a/reactos/drivers/filesystems/npfs/fsctrl.c b/reactos/drivers/filesystems/npfs/fsctrl.c index e1bcf1dafb9..f9f1fee945c 100644 --- a/reactos/drivers/filesystems/npfs/fsctrl.c +++ b/reactos/drivers/filesystems/npfs/fsctrl.c @@ -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;