Fixes: 9b15ba895b9f ("timer: use a skip list")
2016-07-23 7:05 GMT+09:00 Sanford, Robert <rsanford at akamai.com>: > > > 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> >