Hi, so after the reviews from v3, and some discussion with Alexei, I am back with a new version of HID-BPF. This version is not complete (thus the RFC), but I'd like to share it now to get initial feedback, in case I am too far from the actual goal. FTR, the goal is to provide some changes in the core verifier/btf so that we can plug in HID-BPF independently from BPF core. This way we can extend it without having to care about bpf-next. The things I am not entirely sure are: - do we need only fentry/fexit/fmod_ret BPF program types or should programs that modify the data stream use a different kind? - patch 3/7 is probably not the correct approach (see comments in the patch itself) We are missing quite a few bits here: - selftests for patches 1 to 4 - add the ability to attach a program to a struct device, and run that program only for that struct device - when running through bpf_prog_test_run_opts, how can we ensure we are talking to the correct device? (I have a feeling this is linked to the previous point) - how can we reconnect the device when a report descriptor fixup BPF program is loaded (would it make sense to allow some notifications on when a BPF program is attached/detached to a device, and which function have been traced?) Cheers, Benjamin Benjamin Tissoires (7): bpf/btf: also allow kfunc in tracing programs bpf/verifier: allow kfunc to return an allocated mem error-inject: add new type that carries if the function is non sleepable btf: Add a new kfunc set which allows to mark a function to be sleepable HID: initial BPF new way implementation samples/bpf: add new hid_mouse example selftests/bpf: add tests for the HID-bpf initial implementation drivers/hid/hid-core.c | 115 +++++ include/asm-generic/error-injection.h | 1 + include/linux/btf.h | 8 + include/linux/hid_bpf.h | 29 ++ kernel/bpf/btf.c | 50 +- kernel/bpf/verifier.c | 76 ++- lib/error-inject.c | 2 + samples/bpf/.gitignore | 1 + samples/bpf/Makefile | 23 + samples/bpf/hid_mouse.bpf.c | 59 +++ samples/bpf/hid_mouse.c | 131 +++++ tools/testing/selftests/bpf/config | 3 + tools/testing/selftests/bpf/prog_tests/hid.c | 482 +++++++++++++++++++ tools/testing/selftests/bpf/progs/hid.c | 32 ++ 14 files changed, 987 insertions(+), 25 deletions(-) create mode 100644 include/linux/hid_bpf.h create mode 100644 samples/bpf/hid_mouse.bpf.c create mode 100644 samples/bpf/hid_mouse.c create mode 100644 tools/testing/selftests/bpf/prog_tests/hid.c create mode 100644 tools/testing/selftests/bpf/progs/hid.c -- 2.35.1