bpf: Use u64_stats_t in struct bpf_prog_stats
authorEric Dumazet <edumazet@google.com>
Tue, 26 Oct 2021 21:41:33 +0000 (14:41 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Wed, 27 Oct 2021 18:13:52 +0000 (11:13 -0700)
commit61a0abaee2092eee69e44fe60336aa2f5b578938
tree5ee181827d5064079aaa77ce0e3523a70daf1e86
parentd979617aa84d96acca44c2f5778892b4565e322f
bpf: Use u64_stats_t in struct bpf_prog_stats

Commit 316580b69d0a ("u64_stats: provide u64_stats_t type")
fixed possible load/store tearing on 64bit arches.

For instance the following C code

stats->nsecs += sched_clock() - start;

Could be rightfully implemented like this by a compiler,
confusing concurrent readers a lot:

stats->nsecs += sched_clock();
// arbitrary delay
stats->nsecs -= start;

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20211026214133.3114279-4-eric.dumazet@gmail.com
include/linux/filter.h
kernel/bpf/syscall.c
kernel/bpf/trampoline.c