Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ipvs: stats should not depend on CPU 0

When reading percpu stats we need to properly reset
the sum when CPU 0 is not present in the possible mask.

Signed-off-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: Simon Horman <horms@verge.net.au>

authored by

Julian Anastasov and committed by
Simon Horman
d1ee4fea 742617b1

+3 -1
+3 -1
net/netfilter/ipvs/ip_vs_est.c
··· 59 59 struct ip_vs_cpu_stats __percpu *stats) 60 60 { 61 61 int i; 62 + bool add = false; 62 63 63 64 for_each_possible_cpu(i) { 64 65 struct ip_vs_cpu_stats *s = per_cpu_ptr(stats, i); 65 66 unsigned int start; 66 67 __u64 inbytes, outbytes; 67 - if (i) { 68 + if (add) { 68 69 sum->conns += s->ustats.conns; 69 70 sum->inpkts += s->ustats.inpkts; 70 71 sum->outpkts += s->ustats.outpkts; ··· 77 76 sum->inbytes += inbytes; 78 77 sum->outbytes += outbytes; 79 78 } else { 79 + add = true; 80 80 sum->conns = s->ustats.conns; 81 81 sum->inpkts = s->ustats.inpkts; 82 82 sum->outpkts = s->ustats.outpkts;