On Fri, Mar 13, 2026 at 08:40:24AM +0100, Benjamin Tissoires wrote: > 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 <[email protected]> > Closes: > https://lore.kernel.org/oe-kbuild-all/[email protected]/ > Cc: [email protected]
'Fixes' missing? Also for patch 2 in the series. > Signed-off-by: Benjamin Tissoires <[email protected]> Reviewed-by: Thomas Weißschuh <[email protected]> (Some nits below, feel free to ignore them) > --- > tools/testing/selftests/hid/progs/hid_bpf_helpers.h | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/tools/testing/selftests/hid/progs/hid_bpf_helpers.h > b/tools/testing/selftests/hid/progs/hid_bpf_helpers.h > index 80ab60905865..2c6ec907dd05 100644 > --- a/tools/testing/selftests/hid/progs/hid_bpf_helpers.h > +++ b/tools/testing/selftests/hid/progs/hid_bpf_helpers.h > @@ -8,9 +8,11 @@ > /* "undefine" structs and enums in vmlinux.h, because we "override" them > below */ > #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 > +#define bpf_wq bpf_wq___not_used 'bpf' would sort before 'hid' alphabetically. > #define HID_INPUT_REPORT HID_INPUT_REPORT___not_used > #define HID_OUTPUT_REPORT HID_OUTPUT_REPORT___not_used > #define HID_FEATURE_REPORT HID_FEATURE_REPORT___not_used > @@ -29,9 +31,11 @@ > > #undef hid_bpf_ctx > #undef hid_bpf_ops > +#undef hid_device > #undef hid_report_type > #undef hid_class_request > #undef hid_bpf_attach_flags > +#undef bpf_wq > #undef HID_INPUT_REPORT > #undef HID_OUTPUT_REPORT > #undef HID_FEATURE_REPORT > @@ -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]; > +}; The fields are never used, would a forward-declaration be sufficient? struct bpf_wq; Then you could also avoid the #define dance for that struct. > + > struct hid_bpf_ctx { > struct hid_device *hid; > __u32 allocated_size; > > -- > 2.52.0 >

