[dpdk-dev] [PATCH] eal/linux: fix return after alarm registration failure

David Marchand david.marchand at redhat.com
Wed Jun 26 13:20:17 CEST 2019


On Wed, Jun 26, 2019 at 12:41 PM Thomas Monjalon <thomas at monjalon.net>
wrote:

> When adding an alarm, if an error happen when registering
> the common alarm callback, it is not considered as a major failure.
> The alarm is then inserted in the list.
> However it was returning an error code after inserting the alarm.
>
> The error code is reset to 0 so the behaviour and the return code
> are consistent.
> Other return code related lines are cleaned up for easier understanding.
>
> Fixes: af75078fece3 ("first public release")
> Cc: stable at dpdk.org
>
> Signed-off-by: Thomas Monjalon <thomas at monjalon.net>
> ---
>  lib/librte_eal/linux/eal/eal_alarm.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/lib/librte_eal/linux/eal/eal_alarm.c
> b/lib/librte_eal/linux/eal/eal_alarm.c
> index 840ede780..d6d70e8c3 100644
> --- a/lib/librte_eal/linux/eal/eal_alarm.c
> +++ b/lib/librte_eal/linux/eal/eal_alarm.c
> @@ -137,9 +137,13 @@ rte_eal_alarm_set(uint64_t us, rte_eal_alarm_callback
> cb_fn, void *cb_arg)
>
>         rte_spinlock_lock(&alarm_list_lk);
>         if (!handler_registered) {
> -               ret |= rte_intr_callback_register(&intr_handle,
> +               ret = rte_intr_callback_register(&intr_handle,
>                                 eal_alarm_callback, NULL);
> -               handler_registered = (ret == 0) ? 1 : 0;
> +               if (ret == 0)
> +                       handler_registered = 1;
> +               else
> +                       /* not fatal, callback can be registered later */
> +                       ret = 0;
>         }
>
>         if (LIST_EMPTY(&alarm_list))
>

Well, then it means that you don't want to touch ret at all.
How about:
if (rte_intr_callback_register(&intr_handle,
                               eal_alarm_callback, NULL) == 0)
        handler_registered = 1;

?


-- 
David Marchand


More information about the dev mailing list