From a901af0b60ddd643d19a9d9d4690b07008e58808 Mon Sep 17 00:00:00 2001 From: Sorin Vinturis Date: Fri, 10 Jul 2015 08:26:51 +0000 Subject: [PATCH] datapath-windows: Solved BSOD when cleaning up the VXLAN tunnel When removing vport also remove the vxlan tunnel port. Signed-off-by: Sorin Vinturis Reported-by: Sorin Vinturis Reported-at: https://github.com/openvswitch/ovs-issues/issues/94 Acked-by: Alin Gabriel Serdean Signed-off-by: Ben Pfaff --- datapath-windows/ovsext/Vport.c | 6 ++++++ datapath-windows/ovsext/Vxlan.c | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/datapath-windows/ovsext/Vport.c b/datapath-windows/ovsext/Vport.c index 43154641f..d692a6dc7 100644 --- a/datapath-windows/ovsext/Vport.c +++ b/datapath-windows/ovsext/Vport.c @@ -2531,6 +2531,12 @@ OvsTunnelVportPendingRemove(PVOID context, RemoveEntryList(&vport->ovsNameLink); RemoveEntryList(&vport->portNoLink); RemoveEntryList(&vport->tunnelVportLink); + + if (vport->priv) { + OvsFreeMemoryWithTag(vport->priv, OVS_VXLAN_POOL_TAG); + vport->priv = NULL; + } + OvsFreeMemoryWithTag(vport, OVS_VPORT_POOL_TAG); NdisReleaseRWLock(switchContext->dispatchLock, &lockState); diff --git a/datapath-windows/ovsext/Vxlan.c b/datapath-windows/ovsext/Vxlan.c index f43805aa3..b84c1d0b4 100644 --- a/datapath-windows/ovsext/Vxlan.c +++ b/datapath-windows/ovsext/Vxlan.c @@ -154,11 +154,11 @@ OvsCleanupVxlanTunnel(PIRP irp, vxlanPort->filterID, callback, tunnelContext); + } else { + OvsFreeMemoryWithTag(vport->priv, OVS_VXLAN_POOL_TAG); + vport->priv = NULL; } - OvsFreeMemoryWithTag(vport->priv, OVS_VXLAN_POOL_TAG); - vport->priv = NULL; - return status; } -- 2.20.1