[dpdk-dev] [PATCH] timer: fix incorrect pending-list manipulation

Sanford, Robert rsanford at akamai.com
Sat Jul 23 00:05:01 CEST 2016



On 7/17/16 10:35 AM, "Hiroyuki Mikita" <h.mikita89 at gmail.com> wrote:

>This commit fixes incorrect pending-list manipulation
>when getting list of expired timers in rte_timer_manage().
>
>When timer_get_prev_entries() sets pending_head on prev,
>the pending-list is broken.
>The next of pending_head always becomes NULL.
>In this depth level, it is not need to manipulate the list.
>
>Signed-off-by: Hiroyuki Mikita <h.mikita89 at gmail.com>
>---
> lib/librte_timer/rte_timer.c | 2 ++
> 1 file changed, 2 insertions(+)
>
>diff --git a/lib/librte_timer/rte_timer.c b/lib/librte_timer/rte_timer.c
>index 3dcdab5..7457d32 100644
>--- a/lib/librte_timer/rte_timer.c
>+++ b/lib/librte_timer/rte_timer.c
>@@ -543,6 +543,8 @@ void rte_timer_manage(void)
> 	/* break the existing list at current time point */
> 	timer_get_prev_entries(cur_time, lcore_id, prev);
> 	for (i = priv_timer[lcore_id].curr_skiplist_depth -1; i >= 0; i--) {
>+		if (prev[i] == &priv_timer[lcore_id].pending_head)
>+			continue;
> 		priv_timer[lcore_id].pending_head.sl_next[i] =
> 		    prev[i]->sl_next[i];
> 		if (prev[i]->sl_next[i] == NULL)
>-- 
>2.7.4
>

Acked-by: Robert Sanford <rsanford at akamai.com>



More information about the dev mailing list