Files
Linux/tools/perf/util
Ian Rogers 9a24180567 perf bpf: Remove undefined behavior from bpf_perf_object__next()
bpf_perf_object__next() folded the last element in the list test with the
empty list test. However, this meant that offsets were computed against
null and that a struct list_head was compared against a 'struct
bpf_perf_object'.

Working around this with clang's undefined behavior sanitizer required
-fno-sanitize=null and -fno-sanitize=object-size.

Remove the undefined behavior by using the regular Linux list APIs and
handling the starting case separately from the end testing case.

Looking at uses like bpf_perf_object__for_each(), as the constant NULL
or non-NULL argument can be constant propagated, the code is no less
efficient.

Signed-off-by: Ian Rogers <[email protected]>
Cc: Alexander Shishkin <[email protected]>
Cc: Alexei Starovoitov <[email protected]>
Cc: Andrii Nakryiko <[email protected]>
Cc: Christy Lee <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Mark Rutland <[email protected]>
Cc: Miaoqian Lin <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Nathan Chancellor <[email protected]>
Cc: Nick Desaulniers <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Cc: Tom Rix <[email protected]>
Cc: [email protected]
Cc: [email protected]
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
2022-07-27 11:19:39 -03:00
..
…
2022-01-12 17:01:38 -08:00
…
2022-06-28 12:05:25 -03:00
…
2022-02-14 16:47:13 -03:00
…
…
…
2022-01-12 14:28:23 -03:00
2021-09-03 08:15:10 -03:00
2021-04-29 10:30:58 -03:00
2022-05-23 10:11:39 -03:00
2022-05-23 10:11:39 -03:00
2021-08-11 09:35:44 -03:00
2021-08-11 09:35:44 -03:00
2022-01-12 14:28:23 -03:00
2022-01-12 14:28:23 -03:00
2022-05-23 10:18:38 -03:00
2022-04-11 16:37:26 -03:00
2021-11-07 12:27:38 -03:00
2021-02-03 13:10:44 -03:00
2021-07-15 17:30:22 -03:00
2022-05-23 10:18:38 -03:00
2022-05-23 10:18:38 -03:00
2022-02-14 16:56:32 -03:00
…
2022-02-11 14:05:49 -03:00
…
…
…
…
…
…
2021-11-07 12:27:38 -03:00
2022-05-23 10:18:38 -03:00
…
…
…
2020-10-14 13:34:26 -03:00
2021-02-17 15:15:06 -03:00
2021-02-17 15:15:06 -03:00
…
…
…
2020-04-18 09:05:01 -03:00
2020-04-18 09:05:01 -03:00
2022-02-15 17:15:29 -03:00
…
…