Thanks Alin and Darrell, I applied this to master. I don't think it needs any backports.
On Wed, Sep 06, 2017 at 10:41:25PM +0300, [email protected] wrote: > Thanks a lot for fixing this! > > Acked-by: Alin Serdean <[email protected]> > > > -----Original Message----- > > From: [email protected] [mailto:ovs-dev- > > [email protected]] On Behalf Of Ben Pfaff > > Sent: Wednesday, September 6, 2017 6:58 PM > > To: [email protected] > > Cc: Ben Pfaff <[email protected]>; Alin Serdean <[email protected]> > > Subject: [ovs-dev] [PATCH] dpif-netdev: Avoid side-effect in argument of > > atomic_store_relaxed(). > > > > Some of the implementations of atomic_store_relaxed() evaluate their first > > argument more than once, so arguments with side effects cause strange > > behavior. This fixes a problem observed on 64-bit Windows. > > > > Reported-by: Alin Serdean <[email protected]> > > Signed-off-by: Ben Pfaff <[email protected]> > > --- > > lib/dpif-netdev.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index > > 071ec141f1d1..0ceef9d82914 100644 > > --- a/lib/dpif-netdev.c > > +++ b/lib/dpif-netdev.c > > @@ -3201,8 +3201,8 @@ static void > > dp_netdev_rxq_set_intrvl_cycles(struct dp_netdev_rxq *rx, > > unsigned long long cycles) { > > - atomic_store_relaxed(&rx->cycles_intrvl[rx->intrvl_idx++ > > - % PMD_RXQ_INTERVAL_MAX], > cycles); > > + unsigned int idx = rx->intrvl_idx++ % PMD_RXQ_INTERVAL_MAX; > > + atomic_store_relaxed(&rx->cycles_intrvl[idx], cycles); > > } > > > > static uint64_t > > -- > > 2.10.2 > > > > _______________________________________________ > > dev mailing list > > [email protected] > > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
