From 0a193d609a1612ad8ce7575efcc75753605e8998 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sat, 10 Oct 2015 14:52:19 +0000 Subject: [PATCH] [CSQ] Add even more sanity checks svn path=/trunk/; revision=69489 --- reactos/lib/drivers/csq/csq.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/reactos/lib/drivers/csq/csq.c b/reactos/lib/drivers/csq/csq.c index b570bcdfdba..793193c3c8d 100644 --- a/reactos/lib/drivers/csq/csq.c +++ b/reactos/lib/drivers/csq/csq.c @@ -337,6 +337,8 @@ IoCsqRemoveIrp( if(!Irp) break; + ASSERT(Context->Csq == Csq); + /* Unset the cancel routine and see if it has already been canceled */ if(!IoSetCancelRoutine(Irp, NULL)) { @@ -348,6 +350,8 @@ IoCsqRemoveIrp( break; } + ASSERT(Context == Irp->Tail.Overlay.DriverContext[3]); + /* This IRP is valid and is ours. Dequeue it, fix it up, and return */ Csq->CsqRemoveIrp(Csq, Irp); @@ -358,7 +362,7 @@ IoCsqRemoveIrp( Context->Irp = NULL; ASSERT(Context->Csq == Csq); - } + } } while(0); @@ -412,9 +416,13 @@ IoCsqRemoveNextIrp( /* Unset the context stuff and return */ Context = (PIO_CSQ_IRP_CONTEXT)InterlockedExchangePointer(&Irp->Tail.Overlay.DriverContext[3], NULL); - if(Context && Context->Type == IO_TYPE_CSQ_IRP_CONTEXT) + if (Context && Context->Type == IO_TYPE_CSQ_IRP_CONTEXT) + { Context->Irp = NULL; + ASSERT(Context->Csq == Csq); + } + break; }