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

[PATCH] Only call EvtchnFlush on valid Cpus



The Evtchn processor array is created using KeQueryMaximumProcessorCountEx, 
which
can include processors that do not get initialized.
Skip cleanup and flushing uninitialized event channels

Signed-off-by: Owen Smith <owen.smith@xxxxxxxxx>
---
 src/xenbus/evtchn.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/xenbus/evtchn.c b/src/xenbus/evtchn.c
index 2e63edb..ec4ac28 100644
--- a/src/xenbus/evtchn.c
+++ b/src/xenbus/evtchn.c
@@ -1752,10 +1752,16 @@ EvtchnRelease(
 
     for (Cpu = 0; Cpu < Context->ProcessorCount; Cpu++) {
         PXENBUS_EVTCHN_PROCESSOR Processor;
+        unsigned int             vcpu_id;
+        NTSTATUS                 status;
 
         ASSERT(Context->Processor != NULL);
         Processor = &Context->Processor[Cpu];
 
+        status = SystemProcessorVcpuId(Cpu, &vcpu_id);
+        if (!NT_SUCCESS(status))
+            continue;
+
         EvtchnFlush(Context, Cpu);
 
         (VOID) KeRemoveQueueDpc(&Processor->Dpc);
-- 
2.39.0.windows.1




 


Rackspace

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