HID: bpf: return non NULL data pointer when CONFIG_HID_BPF is not set
Commit Message
dispatch_hid_bpf_device_event() is supposed to return either an error,
or a valid pointer to memory containing the data.
Returning NULL simply makes a segfault when CONFIG_HID_BPF is not set
for any processed event.
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
---
This was detected by my own CI. Yes, a little bit embarrassing...
It applies on top of for-6.2/hid-bpf in case it was not obvious
Cheers,
Benjamin
---
include/linux/hid_bpf.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
On Wed, 16 Nov 2022, Benjamin Tissoires wrote:
> dispatch_hid_bpf_device_event() is supposed to return either an error,
> or a valid pointer to memory containing the data.
>
> Returning NULL simply makes a segfault when CONFIG_HID_BPF is not set
> for any processed event.
>
> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
I have added
Fixes: 658ee5a64fcfbbf ("HID: bpf: allocate data memory for device_event BPF program")
and applied on top of the HID-BPF pile. Thanks,
@@ -148,7 +148,7 @@ void hid_bpf_device_init(struct hid_device *hid);
u8 *call_hid_bpf_rdesc_fixup(struct hid_device *hdev, u8 *rdesc, unsigned int *size);
#else /* CONFIG_HID_BPF */
static inline u8 *dispatch_hid_bpf_device_event(struct hid_device *hid, enum hid_report_type type,
- u8 *data, u32 *size, int interrupt) { return NULL; }
+ u8 *data, u32 *size, int interrupt) { return data; }
static inline int hid_bpf_connect_device(struct hid_device *hdev) { return 0; }
static inline void hid_bpf_disconnect_device(struct hid_device *hdev) {}
static inline void hid_bpf_destroy_device(struct hid_device *hid) {}