I came around a BSOD that happened when trying to access pidHashLock from the gOvsSwitchContext, which was NULL. The stop happened in OvsAcquirePidHashLock function.
To reproduce this BSOD, make sure the extension is enabled and running, disable it and, after that, execute 'ovs-dpctl.exe show'. The BSOD is triggered afterwards. Signed-off-by: Sorin Vinturis <svintu...@cloudbasesolutions.com> Reported-by: Sorin Vinturis <svintu...@cloudbasesolutions.com> Reported-at: https://github.com/openvswitch/ovs-issues/issues/53 Acked-by: Eitan Eliahu <elia...@vmware.com> --- datapath-windows/ovsext/Tunnel.c | 3 ++- datapath-windows/ovsext/User.c | 13 +++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/datapath-windows/ovsext/Tunnel.c b/datapath-windows/ovsext/Tunnel.c index b55a223..fed58f1 100644 --- a/datapath-windows/ovsext/Tunnel.c +++ b/datapath-windows/ovsext/Tunnel.c @@ -224,9 +224,10 @@ OvsInjectPacketThroughActions(PNET_BUFFER_LIST pNbl, OvsCompletionList completionList; KIRQL irql; ULONG SendFlags = NDIS_SEND_FLAGS_SWITCH_DESTINATION_GROUP; - OVS_DATAPATH *datapath = &gOvsSwitchContext->datapath; + OVS_DATAPATH *datapath = NULL; ASSERT(gOvsSwitchContext); + datapath = &gOvsSwitchContext->datapath; /* Fill the tunnel key */ status = OvsSlowPathDecapVxlan(pNbl, &tunnelKey); diff --git a/datapath-windows/ovsext/User.c b/datapath-windows/ovsext/User.c index fc27f7d..b67c78d 100644 --- a/datapath-windows/ovsext/User.c +++ b/datapath-windows/ovsext/User.c @@ -141,10 +141,15 @@ OvsCleanupPacketQueue(POVS_OPEN_INSTANCE instance) OvsFreeMemory(queue); } - /* Remove the instance from pidHashArray */ - OvsAcquirePidHashLock(); - OvsDelPidInstance(gOvsSwitchContext, instance->pid); - OvsReleasePidHashLock(); + /* Verify if gOvsSwitchContext exists. */ + OvsAcquireCtrlLock(); + if (gOvsSwitchContext) { + /* Remove the instance from pidHashArray */ + OvsAcquirePidHashLock(); + OvsDelPidInstance(gOvsSwitchContext, instance->pid); + OvsReleasePidHashLock(); + } + OvsReleaseCtrlLock(); } NTSTATUS -- 1.9.0.msysgit.0 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev