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
