syzbot found a locking issue with bpf_ktime_get_coarse_ns() helper executed in BPF_PROG_TYPE_PERF_EVENT prog type - [1]. The issue is possible because the helper uses non fast version of time accessors which isn't safe for any context. The helper was added because it provides performance benefits in comparison to bpf_ktime_get_ns(). Forbid use of bpf_ktime_get_coarse_ns() helper in tracing progs. The same issue is possible with bpf_timer_* set of helpers - forbid their usage in tracing progs too. In the discussion it was stated that bpf_spin_lock releated helpers shall also be excluded for tracing progs. This is already done in a different way - by compatibility check between a map and a program. The verifier fails if a tracing program tries to use a map which value has struct bpf_spin_lock. This prevents using bpf_spin_lock in tracing progs. Patch 1 adds allowance checks for helpers Patch 2 adds tests 1. https://lore.kernel.org/all/00000000000013aebd05cff8e064@xxxxxxxxxx/ Dmitrii Banshchikov (2): bpf: Forbid bpf_ktime_get_coarse_ns and bpf_timer_* in tracing progs selftests/bpf: Add tests for allowed helpers kernel/bpf/helpers.c | 30 +++ tools/testing/selftests/bpf/test_verifier.c | 36 +++- .../selftests/bpf/verifier/helper_allowed.c | 196 ++++++++++++++++++ 3 files changed, 261 insertions(+), 1 deletion(-) create mode 100644 tools/testing/selftests/bpf/verifier/helper_allowed.c -- 2.25.1