From 048960272e809ea728110748d317ddce1d731a27 Mon Sep 17 00:00:00 2001 From: Ciara Power Date: Wed, 5 May 2021 15:22:48 +0000 Subject: [PATCH] telemetry: fix race on callbacks list The list_commands() function accessed the callbacks list, but did not take the lock. This may have caused inconsistencies if callbacks were being registered at the same time. This is now fixed to lock before iterating the list, and unlock afterwards. Fixes: f38748736eb2 ("telemetry: add default callback commands") Cc: stable@dpdk.org Reported-by: David Marchand Signed-off-by: Ciara Power Acked-by: Bruce Richardson --- lib/telemetry/telemetry.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/telemetry/telemetry.c b/lib/telemetry/telemetry.c index c06de45531..f8b0d1157b 100644 --- a/lib/telemetry/telemetry.c +++ b/lib/telemetry/telemetry.c @@ -107,8 +107,10 @@ list_commands(const char *cmd __rte_unused, const char *params __rte_unused, int i; rte_tel_data_start_array(d, RTE_TEL_STRING_VAL); + rte_spinlock_lock(&callback_sl); for (i = 0; i < num_callbacks; i++) rte_tel_data_add_array_string(d, callbacks[i].cmd); + rte_spinlock_unlock(&callback_sl); return 0; } -- 2.20.1