Merged,
Maxim.
On 06/14/16 01:32, Bill Fischofer wrote:
Resolve Bug https://bugs.linaro.org/show_bug.cgi?id=2306 by cleaning up
TM queues and nodes in error paths.
Signed-off-by: Bill Fischofer <[email protected]>
---
v2: Add (void) to dstroy_tm_queue() call as suggested by Maxim
test/validation/traffic_mngr/traffic_mngr.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/test/validation/traffic_mngr/traffic_mngr.c
b/test/validation/traffic_mngr/traffic_mngr.c
index a0cde43..ce9d038 100644
--- a/test/validation/traffic_mngr/traffic_mngr.c
+++ b/test/validation/traffic_mngr/traffic_mngr.c
@@ -1325,12 +1325,19 @@ static int create_tm_queue(odp_tm_t odp_tm,
rc = odp_tm_queue_connect(tm_queue, tm_node);
if (rc != 0) {
LOG_ERR("odp_tm_queue_connect() failed\n");
+ odp_tm_queue_destroy(tm_queue);
return -1;
}
return 0;
}
+static int destroy_tm_queue(odp_tm_queue_t tm_queue)
+{
+ odp_tm_queue_disconnect(tm_queue);
+ return odp_tm_queue_destroy(tm_queue);
+}
+
static tm_node_desc_t *create_tm_node(odp_tm_t odp_tm,
uint32_t level,
uint32_t num_levels,
@@ -1392,6 +1399,7 @@ static tm_node_desc_t *create_tm_node(odp_tm_t
odp_tm,
if (rc != 0) {
LOG_ERR("odp_tm_node_connect() failed @ level=%u\n",
level);
+ odp_tm_node_destroy(tm_node);
return NULL;
}
@@ -1425,6 +1433,11 @@ static tm_node_desc_t *create_tm_node(odp_tm_t odp_tm,
if (rc != 0) {
LOG_ERR("create_tm_queue() failed @ level=%u\n",
level);
+ while (priority > 0)
+ (void)destroy_tm_queue
+ (queue_desc->tm_queues[--priority]);
+ free(queue_desc);
+ free(node_desc);
return NULL;
}
}
_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp