[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[win-pv-devel] [PATCH] Fix an ASSERT failure and BugCheck on XENBUS unload

The Prcoessor array pointer in the EVTCHN code is not being NULLed, leading
to an ASSERT faiure. There is also a race in zero-ing out the per-processor
DPCs and them being present on kernel queues, which leads to a BugCheck.
This patch fixes both issues.

Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx>
 src/xenbus/evtchn.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/xenbus/evtchn.c b/src/xenbus/evtchn.c
index 23eb189..a5a3caf 100644
--- a/src/xenbus/evtchn.c
+++ b/src/xenbus/evtchn.c
@@ -1374,6 +1374,7 @@ EvtchnRelease(
         EvtchnFlush(Context, Index);
+        (VOID) KeRemoveQueueDpc(&Processor->Dpc);
         RtlZeroMemory(&Processor->Dpc, sizeof (KDPC));
         RtlZeroMemory(&Processor->PendingList, sizeof (LIST_ENTRY));
@@ -1383,6 +1384,7 @@ EvtchnRelease(
     ASSERT(IsZeroMemory(Context->Processor, sizeof (XENBUS_EVTCHN_PROCESSOR) * 
+    Context->Processor = NULL;
     Context->ProcessorCount = 0;
     FdoFreeInterrupt(Fdo, Context->Interrupt);

win-pv-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.