lkml.org 
[lkml]   [2022]   [Apr]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Subject[RFC bpf-next v4 0/7] Introduce eBPF support for HID devices (new attempt)
Date
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

\
 
 \ /
  Last update: 2022-04-21 16:09    [W:0.110 / U:0.136 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site