All memory allocations within event code have 'ESVO' pool tag.

Signed-off-by: Sorin Vinturis <svintu...@cloudbasesolutions.com>
Reported-by: Alin Gabriel Serdean <aserd...@cloudbasesolutions.com>
Reported-at: https://github.com/openvswitch/ovs-issues/issues/56
Acked-by: Alin Gabriel Serdean <aserd...@cloudbasesolutions.com>
Acked-by: Eitan Eliahu <elia...@vmware.com>
---
 datapath-windows/ovsext/Event.c | 18 ++++++++++--------
 datapath-windows/ovsext/Util.h  |  1 +
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/datapath-windows/ovsext/Event.c b/datapath-windows/ovsext/Event.c
index 00f4616..cca9575 100644
--- a/datapath-windows/ovsext/Event.c
+++ b/datapath-windows/ovsext/Event.c
@@ -96,9 +96,9 @@ OvsCleanupEvent(POVS_OPEN_INSTANCE instance)
 
         LIST_FORALL_SAFE(&queue->elemList, link, next) {
             elem = CONTAINING_RECORD(link, OVS_EVENT_QUEUE_ELEM, link);
-            OvsFreeMemory(elem);
+            OvsFreeMemoryWithTag(elem, OVS_EVENT_POOL_TAG);
         }
-        OvsFreeMemory(queue);
+        OvsFreeMemoryWithTag(queue, OVS_EVENT_POOL_TAG);
     }
 }
 
@@ -139,7 +139,8 @@ OvsPostEvent(UINT32 portNo,
             portNo == OVS_DEFAULT_PORT_NO) {
             queue->pollAll = TRUE;
         } else {
-            elem = (POVS_EVENT_QUEUE_ELEM)OvsAllocateMemory(sizeof(*elem));
+            elem = (POVS_EVENT_QUEUE_ELEM)OvsAllocateMemoryWithTag(
+                sizeof(*elem), OVS_EVENT_POOL_TAG);
             if (elem == NULL) {
                 queue->pollAll = TRUE;
             } else {
@@ -158,7 +159,7 @@ OvsPostEvent(UINT32 portNo,
             LIST_FORALL_SAFE(&queue->elemList, curr, next) {
                 RemoveEntryList(curr);
                 elem = CONTAINING_RECORD(curr, OVS_EVENT_QUEUE_ELEM, link);
-                OvsFreeMemory(elem);
+                OvsFreeMemoryWithTag(elem, OVS_EVENT_POOL_TAG);
             }
             queue->numElems = 0;
         }
@@ -243,7 +244,8 @@ OvsSubscribeEventIoctl(PFILE_OBJECT fileObject,
     }
 
     if (request->subscribe) {
-        queue = (POVS_EVENT_QUEUE)OvsAllocateMemory(sizeof (OVS_EVENT_QUEUE));
+        queue = (POVS_EVENT_QUEUE)OvsAllocateMemoryWithTag(
+            sizeof(OVS_EVENT_QUEUE), OVS_EVENT_POOL_TAG);
         if (queue == NULL) {
             status = STATUS_NO_MEMORY;
             OVS_LOG_WARN("Fail to allocate event queue");
@@ -284,9 +286,9 @@ done_event_subscribe:
         }
         LIST_FORALL_SAFE(&queue->elemList, link, next) {
             elem = CONTAINING_RECORD(link, OVS_EVENT_QUEUE_ELEM, link);
-            OvsFreeMemory(elem);
+            OvsFreeMemoryWithTag(elem, OVS_EVENT_POOL_TAG);
         }
-        OvsFreeMemory(queue);
+        OvsFreeMemoryWithTag(queue, OVS_EVENT_POOL_TAG);
     } else {
         OvsReleaseEventQueueLock();
     }
@@ -446,7 +448,7 @@ OvsRemoveEventEntry(POVS_OPEN_INSTANCE instance,
         elem = (POVS_EVENT_QUEUE_ELEM)RemoveHeadList(&queue->elemList);
         entry->portNo = elem->portNo;
         entry->status = elem->status;
-        OvsFreeMemory(elem);
+        OvsFreeMemoryWithTag(elem, OVS_EVENT_POOL_TAG);
         queue->numElems--;
         status = STATUS_SUCCESS;
     }
diff --git a/datapath-windows/ovsext/Util.h b/datapath-windows/ovsext/Util.h
index 6a9c169..7811288 100644
--- a/datapath-windows/ovsext/Util.h
+++ b/datapath-windows/ovsext/Util.h
@@ -25,6 +25,7 @@
 #define OVS_OTHER_POOL_TAG              'MSVO'
 #define OVS_MDL_POOL_TAG                'BSVO'
 #define OVS_DATAPATH_POOL_TAG           'DSVO'
+#define OVS_EVENT_POOL_TAG              'ESVO'
 
 VOID *OvsAllocateMemory(size_t size);
 VOID *OvsAllocateMemoryWithTag(size_t size, ULONG tag);
-- 
1.9.0.msysgit.0
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to