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: sta...@dpdk.org Signed-off-by: Ciara Power <ciara.po...@intel.com> Reported-by: David Marchand <david.march...@redhat.com> --- lib/telemetry/telemetry.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/telemetry/telemetry.c b/lib/telemetry/telemetry.c index 386d0080bc..68b479e0e4 100644 --- a/lib/telemetry/telemetry.c +++ b/lib/telemetry/telemetry.c @@ -104,8 +104,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.25.1