[dpdk-dev] [PATCH 1/1] timer: fix race condition
Carrillo, Erik G
erik.g.carrillo at intel.com
Wed Dec 19 17:11:57 CET 2018
> > > 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.hu at arm.com>
>
<...snipped...>
Thanks for the review, Gavin. I've made the update and resubmitted.
Regards,
Erik
More information about the dev
mailing list