On Fri, Mar 4, 2022 at 9:31 AM Benjamin Tissoires benjamin.tissoires@redhat.com wrote:
Now that BPF can be compatible with HID, add the capability into HID. drivers/hid/hid-bpf.c takes care of the glue between bpf and HID, and hid-core can then inject any incoming event from the device into a BPF program to filter/analyze it.
Signed-off-by: Benjamin Tissoires benjamin.tissoires@redhat.com
[...]
+static int hid_bpf_link_attach(struct hid_device *hdev, enum bpf_hid_attach_type type) +{
int err = 0;
switch (type) {
case BPF_HID_ATTACH_DEVICE_EVENT:
if (!hdev->bpf.ctx) {
hdev->bpf.ctx = bpf_hid_allocate_ctx(hdev, HID_BPF_MAX_BUFFER_SIZE);
if (IS_ERR(hdev->bpf.ctx)) {
err = PTR_ERR(hdev->bpf.ctx);
hdev->bpf.ctx = NULL;
}
}
break;
default:
/* do nothing */
Do we need to show warning and/or return EINVAL here?
}
return err;
+}
+static void hid_bpf_array_detached(struct hid_device *hdev, enum bpf_hid_attach_type type) +{
switch (type) {
case BPF_HID_ATTACH_DEVICE_EVENT:
kfree(hdev->bpf.ctx);
hdev->bpf.ctx = NULL;
break;
default:
/* do nothing */
ditto
[...]