Skip to content

Commit ebae0b2

Browse files
author
Benjamin Tissoires
committed
HID: bpf: fix dispatch_hid_bpf_device_event uninitialized ret value
Looks like if a bpf program gets inserted and then removed, hdev->bpf.device_data is then allocated, but the loop iterating over the bpf program is never assigning ret. This is a problem and also revealed another bug in which only the last value of ret was checked. This effectively meant than only the last program in the chain could change the size of the incoming buffer. Reported-by: Dan Carpenter <dan.carpenter@linaro.org> Link: https://lore.kernel.org/all/00f7b624-219f-4a05-a7ad-5335f15a41c7@moroto.mountain Fixes: 4a86220 ("HID: bpf: remove tracing HID-BPF capability") Link: https://patch.msgid.link/20240626-hid_hw_req_bpf-v2-1-cfd60fb6c79f@kernel.org Acked-by: Jiri Kosina <jkosina@suse.com> Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
1 parent 9e16bad commit ebae0b2

1 file changed

Lines changed: 2 additions & 1 deletion

File tree

drivers/hid/bpf/hid_bpf_dispatch.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,12 @@ dispatch_hid_bpf_device_event(struct hid_device *hdev, enum hid_report_type type
5757
}
5858

5959
if (ret)
60-
ctx_kern.ctx.retval = ret;
60+
ctx_kern.ctx.size = ret;
6161
}
6262
}
6363
rcu_read_unlock();
6464

65+
ret = ctx_kern.ctx.size;
6566
if (ret) {
6667
if (ret > ctx_kern.ctx.allocated_size)
6768
return ERR_PTR(-EINVAL);

0 commit comments

Comments
 (0)