]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
selftests/hid: fix compilation when bpf_wq and hid_device are not exported
authorBenjamin Tissoires <bentiss@kernel.org>
Fri, 13 Mar 2026 07:40:24 +0000 (08:40 +0100)
committerBenjamin Tissoires <bentiss@kernel.org>
Mon, 16 Mar 2026 15:21:06 +0000 (16:21 +0100)
This can happen in situations when CONFIG_HID_SUPPORT is set to no, or
some complex situations where struct bpf_wq is not exported.

So do the usual dance of hiding them before including vmlinux.h, and
then redefining them and make use of CO-RE to have the correct offsets.

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202603111558.KLCIxsZB-lkp@intel.com/
Fixes: fe8d561db3e8 ("selftests/hid: add wq test for hid_bpf_input_report()")
Cc: stable@vger.kernel.org
Acked-by: Jiri Kosina <jkosina@suse.com>
Reviewed-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
tools/testing/selftests/hid/progs/hid_bpf_helpers.h

index 80ab609058654db0cae797898974f8d3413e2e06..cdca912f3afd8e8a16d70b572fb7fdf85501d15b 100644 (file)
@@ -6,8 +6,10 @@
 #define __HID_BPF_HELPERS_H
 
 /* "undefine" structs and enums in vmlinux.h, because we "override" them below */
+#define bpf_wq bpf_wq___not_used
 #define hid_bpf_ctx hid_bpf_ctx___not_used
 #define hid_bpf_ops hid_bpf_ops___not_used
+#define hid_device hid_device___not_used
 #define hid_report_type hid_report_type___not_used
 #define hid_class_request hid_class_request___not_used
 #define hid_bpf_attach_flags hid_bpf_attach_flags___not_used
 
 #include "vmlinux.h"
 
+#undef bpf_wq
 #undef hid_bpf_ctx
 #undef hid_bpf_ops
+#undef hid_device
 #undef hid_report_type
 #undef hid_class_request
 #undef hid_bpf_attach_flags
@@ -55,6 +59,14 @@ enum hid_report_type {
        HID_REPORT_TYPES,
 };
 
+struct hid_device {
+       unsigned int id;
+} __attribute__((preserve_access_index));
+
+struct bpf_wq {
+       __u64 __opaque[2];
+};
+
 struct hid_bpf_ctx {
        struct hid_device *hid;
        __u32 allocated_size;