From: Ciara Power Date: Wed, 5 May 2021 15:22:48 +0000 (+0000) Subject: telemetry: fix race on callbacks list X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=048960272e809ea728110748d317ddce1d731a27;p=dpdk.git 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 --- 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; }