All memory allocations within user code have 'USVO' 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/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@openvswitch.org http://openvswitch.org/mailman/listinfo/dev