All new accounts created on Gitlab now require administrator approval. If you invite any collaborators, please let Flux staff know so they can approve the accounts.

Commit 6dba08e3 authored by Sorin Vinturis's avatar Sorin Vinturis Committed by Ben Pfaff

datapath-windows: Avoid BSOD when cleaning up a tunnel vport

If an error appears when creating a tunnel vport the cleanup is performed
twice, which causes the tunnel vport to be released also twice and
generate a BSOD.

This patch modifies the tunnel filter cleanup logic to avoid this issue.
Signed-off-by: default avatarSorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-by: default avatarSorin Vinturis <svinturis@cloudbasesolutions.com>
Reported-at: https://github.com/openvswitch/ovs-issues/issues/97Acked-by: default avatarNithin Raju <nithin@vmware.com>
Signed-off-by: default avatarBen Pfaff <blp@nicira.com>
parent 7c7ae3b9
......@@ -1419,7 +1419,6 @@ OvsTunnelFilterQueueRequest(PIRP irp,
} while (error);
if (error) {
OvsTunnelFilterCompleteRequest(irp, callback, tunnelContext, status);
if (request) {
OvsFreeMemory(request);
request = NULL;
......
......@@ -920,7 +920,8 @@ OvsInitTunnelVport(PVOID userContext,
{
POVS_TUNFLT_INIT_CONTEXT tunnelContext = NULL;
tunnelContext = OvsAllocateMemory(sizeof(*tunnelContext));
tunnelContext = OvsAllocateMemoryWithTag(sizeof(*tunnelContext),
OVS_VPORT_POOL_TAG);
if (tunnelContext == NULL) {
status = STATUS_INSUFFICIENT_RESOURCES;
break;
......@@ -935,6 +936,10 @@ OvsInitTunnelVport(PVOID userContext,
dstPort,
OvsTunnelVportPendingInit,
(PVOID)tunnelContext);
if (status != STATUS_PENDING) {
OvsFreeMemoryWithTag(tunnelContext, OVS_VPORT_POOL_TAG);
tunnelContext = NULL;
}
break;
}
case OVS_VPORT_TYPE_STT:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment