[ovs-dev] [PATCH 10/11] datapath-windows: Added specific pool tag for user code

Alin Serdean aserdean at cloudbasesolutions.com
Thu Mar 26 15:52:17 UTC 2015


Acked-by: Alin Gabriel Serdean <aserdean at cloudbasesolutions.com>


-----Mesaj original-----
De la: dev [mailto:dev-bounces at openvswitch.org] În numele Sorin Vinturis
Trimis: Wednesday, March 25, 2015 10:14 PM
Către: dev at openvswitch.org
Subiect: [ovs-dev] [PATCH 10/11] datapath-windows: Added specific pool tag for user code

All memory allocations within user code have 'USVO' pool tag.

Signed-off-by: Sorin Vinturis <svinturis at cloudbasesolutions.com>
Reported-by: Alin Gabriel Serdean <aserdean at cloudbasesolutions.com>
Reported-at: https://github.com/openvswitch/ovs-issues/issues/56
---
 datapath-windows/ovsext/User.c | 18 ++++++++++--------  datapath-windows/ovsext/Util.h |  1 +
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/datapath-windows/ovsext/User.c b/datapath-windows/ovsext/User.c index d8a657e..03f0377 100644
--- a/datapath-windows/ovsext/User.c
+++ b/datapath-windows/ovsext/User.c
@@ -85,7 +85,7 @@ OvsPurgePacketQueue(POVS_USER_PACKET_QUEUE queue,
     LIST_FORALL_SAFE(&tmp, link, next) {
         RemoveEntryList(link);
         elem = CONTAINING_RECORD(link, OVS_PACKET_QUEUE_ELEM, link);
-        OvsFreeMemory(elem);
+        OvsFreeMemoryWithTag(elem, OVS_USER_POOL_TAG);
     }
 }
 
@@ -132,13 +132,13 @@ OvsCleanupPacketQueue(POVS_OPEN_INSTANCE instance)
     LIST_FORALL_SAFE(&tmp, link, next) {
         RemoveEntryList(link);
         elem = CONTAINING_RECORD(link, OVS_PACKET_QUEUE_ELEM, link);
-        OvsFreeMemory(elem);
+        OvsFreeMemoryWithTag(elem, OVS_USER_POOL_TAG);
     }
     if (irp) {
         OvsCompleteIrpRequest(irp, 0, STATUS_SUCCESS);
     }
     if (queue) {
-        OvsFreeMemory(queue);
+        OvsFreeMemoryWithTag(queue, OVS_USER_POOL_TAG);
     }
 
     /* Verify if gOvsSwitchContext exists. */ @@ -170,7 +170,8 @@ OvsSubscribeDpIoctl(PVOID instanceP,
         OvsReleasePidHashLock();
 
     } else if (instance->packetQueue == NULL && join) {
-        queue = (POVS_USER_PACKET_QUEUE) OvsAllocateMemory(sizeof *queue);
+        queue = (POVS_USER_PACKET_QUEUE) OvsAllocateMemoryWithTag(
+            sizeof *queue, OVS_USER_POOL_TAG);
         if (queue == NULL) {
             return STATUS_NO_MEMORY;
         }
@@ -248,7 +249,7 @@ OvsReadDpIoctl(PFILE_OBJECT fileObject,
         }
 
         *replyLen = len;
-        OvsFreeMemory(elem);
+        OvsFreeMemoryWithTag(elem, OVS_USER_POOL_TAG);
     }
     return STATUS_SUCCESS;
 }
@@ -762,7 +763,7 @@ OvsQueuePackets(PLIST_ENTRY packetList,
     while (!IsListEmpty(&dropPackets)) {
         link = RemoveHeadList(&dropPackets);
         elem = CONTAINING_RECORD(link, OVS_PACKET_QUEUE_ELEM, link);
-        OvsFreeMemory(elem);
+        OvsFreeMemoryWithTag(elem, OVS_USER_POOL_TAG);
         num++;
     }
 
@@ -1060,7 +1061,8 @@ OvsCreateQueueNlPacket(PVOID userData,
                                     dataLen + extraLen);
 
     allocLen = sizeof (OVS_PACKET_QUEUE_ELEM) + nlMsgSize;
-    elem = (POVS_PACKET_QUEUE_ELEM)OvsAllocateMemory(allocLen);
+    elem = (POVS_PACKET_QUEUE_ELEM)OvsAllocateMemoryWithTag(allocLen,
+                                                            
+ OVS_USER_POOL_TAG);
     if (elem == NULL) {
         ovsUserStats.dropDuetoResource++;
         return NULL;
@@ -1163,6 +1165,6 @@ OvsCreateQueueNlPacket(PVOID userData,
 
     return elem;
 fail:
-    OvsFreeMemory(elem);
+    OvsFreeMemoryWithTag(elem, OVS_USER_POOL_TAG);
     return NULL;
 }
diff --git a/datapath-windows/ovsext/Util.h b/datapath-windows/ovsext/Util.h index 2cebe6f..a8eed91 100644
--- a/datapath-windows/ovsext/Util.h
+++ b/datapath-windows/ovsext/Util.h
@@ -31,6 +31,7 @@
 #define OVS_IPHELPER_POOL_TAG           'HSVO'
 #define OVS_OID_POOL_TAG                'ASVO'
 #define OVS_SWITCH_POOL_TAG             'SSVO'
+#define OVS_USER_POOL_TAG               'USVO'
 
 VOID *OvsAllocateMemory(size_t size);
 VOID *OvsAllocateMemoryWithTag(size_t size, ULONG tag);
--
1.9.0.msysgit.0
_______________________________________________
dev mailing list
dev at openvswitch.org
http://openvswitch.org/mailman/listinfo/dev


More information about the dev mailing list