[dpdk-stable] [PATCH v3] telemetry: fix race in telemetry control thread creation

Christian Ehrhardt christian.ehrhardt at canonical.com
Mon Aug 30 08:44:45 CEST 2021


On Tue, Jul 13, 2021 at 8:16 AM Alvin Zhang <alvinx.zhang at intel.com> wrote:
>
> From: Alvin Zhang <alvinzhx at intel.com>
>

This was missing the 19.11 tag and was thereby missed.
It came back via the -rc1 tests of 19.11.10 as it listed the bug again.
Applied now.

> Before the caller returns from function "rte_ctrl_thread_create",
> the newly created thread may have ran, and because the thread
> control flag was not set before, the new thread may exit soon.
> This is not what the developer expected.
>
> This patch puts the setting thread control flag to the place that
> before creating new thread.
>
> Reported-at: https://bugs.dpdk.org/show_bug.cgi?id=731
> Fixes: 8877ac688b52 ("telemetry: introduce infrastructure")
> Cc: stable at dpdk.org
>
> Signed-off-by: Alvin Zhang <alvinzhx at intel.com>
> ---
>
> v2, v3: update commit log
> ---
>  lib/librte_telemetry/rte_telemetry.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/librte_telemetry/rte_telemetry.c b/lib/librte_telemetry/rte_telemetry.c
> index eb20cc6..98d5f91 100644
> --- a/lib/librte_telemetry/rte_telemetry.c
> +++ b/lib/librte_telemetry/rte_telemetry.c
> @@ -1005,10 +1005,10 @@ struct json_data {
>         }
>         TAILQ_INIT(&static_telemetry->client_list_head);
>
> +       static_telemetry->thread_status = 1;
>         ret = rte_ctrl_thread_create(&static_telemetry->thread_id,
>                 telemetry_ctrl_thread, &attr, rte_telemetry_run_thread_func,
>                 (void *)static_telemetry);
> -       static_telemetry->thread_status = 1;
>
>         if (ret < 0) {
>                 ret = rte_telemetry_cleanup();
> --
> 1.8.3.1
>


-- 
Christian Ehrhardt
Staff Engineer, Ubuntu Server
Canonical Ltd


More information about the stable mailing list