From: Alexei Starovoitov <ast@xxxxxxxxxx> v1->v2: - Addressed great feedback from Andrii and Toke. - Fixed race between parallel bpf_timer_*() ops. - Fixed deadlock between timer callback and LRU eviction or bpf_map_delete/update. - Disallowed mmap and global timers. - Allow bpf_spin_lock and bpf_timer in an element. One of each. - Fixed memory leaks due to map destruction and LRU eviction. - Add support for specifying clockid in bpf_timer_init. - Make bpf_timer helpers gpl_only. - Fix key pointer in callback_fn when bpf_timer is inside array. - A ton more tests. The 1st patch implements interaction between bpf programs and bpf core. The 2nd patch implements necessary safety checks. The 3rd patch is the test. Alexei Starovoitov (3): bpf: Introduce bpf_timer bpf: Add verifier checks for bpf_timer. selftests/bpf: Add bpf_timer test. include/linux/bpf.h | 47 ++- include/linux/btf.h | 1 + include/uapi/linux/bpf.h | 40 +++ kernel/bpf/arraymap.c | 14 + kernel/bpf/btf.c | 77 ++++- kernel/bpf/hashtab.c | 56 +++- kernel/bpf/helpers.c | 227 ++++++++++++++ kernel/bpf/local_storage.c | 4 +- kernel/bpf/map_in_map.c | 1 + kernel/bpf/syscall.c | 21 +- kernel/bpf/verifier.c | 133 ++++++++ kernel/trace/bpf_trace.c | 2 +- scripts/bpf_doc.py | 2 + tools/include/uapi/linux/bpf.h | 40 +++ .../testing/selftests/bpf/prog_tests/timer.c | 55 ++++ tools/testing/selftests/bpf/progs/timer.c | 293 ++++++++++++++++++ 16 files changed, 970 insertions(+), 43 deletions(-) create mode 100644 tools/testing/selftests/bpf/prog_tests/timer.c create mode 100644 tools/testing/selftests/bpf/progs/timer.c -- 2.30.2