Allow timing related functions in critical sections, which is useful to measure the time spent acquiring a lock inside BPF programs. Signed-off-by: Kumar Kartikeya Dwivedi --- kernel/bpf/verifier.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index edf5342b982f..4acd8e848c88 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -21044,7 +21044,11 @@ static int do_check_insn(struct bpf_verifier_env *env, bool *do_print_state) if (env->cur_state->active_locks) { if ((insn->src_reg == BPF_REG_0 && - insn->imm != BPF_FUNC_spin_unlock) || + insn->imm != BPF_FUNC_spin_unlock && + insn->imm != BPF_FUNC_ktime_get_ns && + insn->imm != BPF_FUNC_ktime_get_boot_ns && + insn->imm != BPF_FUNC_ktime_get_coarse_ns && + insn->imm != BPF_FUNC_ktime_get_tai_ns) || (insn->src_reg == BPF_PSEUDO_KFUNC_CALL && (insn->off != 0 || !kfunc_spin_allowed(insn->imm)))) { verbose(env, -- 2.47.3