On Sun, Feb 3, 2019 at 10:35 AM Eric Dumazet <eric.duma...@gmail.com> wrote: > > + for_each_possible_cpu(cpu) { > > + struct tc_basic_pcnt *pf = per_cpu_ptr(f->pf, cpu); > > + > > + gpf.rcnt += pf->rcnt; > > + gpf.rhit += pf->rhit; > > + } > > > This looks missing some synchronization of some sort for 32bit kernels ?
I don't know, u32 filter has literally same code: for_each_possible_cpu(cpu) { int i; struct tc_u32_pcnt *pf = per_cpu_ptr(n->pf, cpu); gpf->rcnt += pf->rcnt; gpf->rhit += pf->rhit; for (i = 0; i < n->sel.nkeys; i++) gpf->kcnts[i] += pf->kcnts[i]; } which has been there for years...