> > > However, if a timer expires quickly enough, there exists the
> > > following race condition that causes the timer_manage() routine to
> > > misinterpret a timer in CONFIG state, resulting in lost timers:
> > >
> > > - Thread A:
> > >   - starts a timer with rte_timer_reset()
> > >   - the timer is moved to CONFIG state
> > >   - the spinlock associated with the appropriate skiplist is acquired
> > >   - timer is inserted into the skiplist
> > >   - the spinlock is released
> > > - Thread B:
> > >   - executes rte_timer_manage()
> > >   - find above timer as expired, add it to run list
> > >   - walk run list, see above timer still in CONFIG state, unlink it from
> > >     run list and continue on
> > > - Thread A:
> > >   - move timer to PENDING state
> > >   - return from rte_timer_reset()
> > >   - timer is now in PENDING state, but not actually linked into
> > > skiplist
> Add "nor the run list"?

<...snipped...>

> Other than the minor comment,
> Reviewed-by: Gavin Hu <gavin...@arm.com>
> 

<...snipped...>

Thanks for the review, Gavin.  I've made the update and resubmitted.

Regards,
Erik

Reply via email to