]> xenbits.xensource.com Git - pvdrivers/win/xenbus.git/commitdiff
Fix EvtchnOpen() error path
authorPaul Durrant <paul.durrant@citrix.com>
Tue, 20 Jan 2015 15:11:28 +0000 (15:11 +0000)
committerPaul Durrant <paul.durrant@citrix.com>
Tue, 27 Jan 2015 16:12:51 +0000 (16:12 +0000)
It's possible for an error in the latter stages of EvtchnOpen() to cause the
channel to be left open in Xen. Also the Mask boolean was not being cleared
which would lead to ASSERTion failures in checked builds.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
src/xenbus/evtchn.c

index b1528d5205519be8741ebdcb12abede9a2278833..16060aa9c1645e37f5eab9d808897facc5fafa07 100644 (file)
@@ -452,8 +452,12 @@ fail3:
     Error("fail3\n");
 
     Channel->LocalPort = 0;
+    Channel->Mask = FALSE;
     RtlZeroMemory(&Channel->Parameters, sizeof (XENBUS_EVTCHN_PARAMETERS));
 
+    if (Channel->Type != XENBUS_EVTCHN_TYPE_FIXED)
+        (VOID) EventChannelClose(LocalPort);
+
 fail2:
     Error("fail2\n");