summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext/Flow.c
diff options
context:
space:
mode:
authorAlin Serdean <aserdean@cloudbasesolutions.com>2015-07-02 06:35:58 +0000
committerBen Pfaff <blp@nicira.com>2015-07-02 08:30:31 -0700
commit706c0c0c17adcb3feb0e51e48c4e4a362f0e7ae9 (patch)
treef8f1125c841d3842f6eab8c07dc9b4eb93c4b2b7 /datapath-windows/ovsext/Flow.c
parent06994f879c9d12c164eb4abd44c2455a9eb96bec (diff)
downloadopenvswitch-706c0c0c17adcb3feb0e51e48c4e4a362f0e7ae9.tar.gz
Solved datapath-windows: BSOD when initializing switch context
Add check in case of NdisAllocateRWLock fails to allocate the resources. Check datapath->lock before trying to free it. Signed-off-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Reported-by: Sorin Vinturis <svinturis@cloudbasesolutions.com> Reported-at: https://github.com/openvswitch/ovs-issues/issues/92 Acked-by: Sorin Vinturis <svinturis@cloudbasesolutions.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'datapath-windows/ovsext/Flow.c')
-rw-r--r--datapath-windows/ovsext/Flow.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/datapath-windows/ovsext/Flow.c b/datapath-windows/ovsext/Flow.c
index b93f475df..69b546a58 100644
--- a/datapath-windows/ovsext/Flow.c
+++ b/datapath-windows/ovsext/Flow.c
@@ -1513,6 +1513,11 @@ OvsDeleteFlowTable(OVS_DATAPATH *datapath)
DeleteAllFlows(datapath);
OvsFreeMemoryWithTag(datapath->flowTable, OVS_FLOW_POOL_TAG);
datapath->flowTable = NULL;
+
+ if (datapath->lock == NULL) {
+ return NDIS_STATUS_SUCCESS;
+ }
+
NdisFreeRWLock(datapath->lock);
return NDIS_STATUS_SUCCESS;
@@ -1544,6 +1549,10 @@ OvsAllocateFlowTable(OVS_DATAPATH *datapath,
}
datapath->lock = NdisAllocateRWLock(switchContext->NdisFilterHandle);
+ if (!datapath->lock) {
+ return NDIS_STATUS_RESOURCES;
+ }
+
return NDIS_STATUS_SUCCESS;
}