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

Hiroyuki Mikita h.mikita89 at gmail.com
Mon Jul 25 17:16:38 CEST 2016


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>
>


More information about the dev mailing list