Commit 5d4c6c13 authored by Benjamin Tissoires's avatar Benjamin Tissoires
Browse files

selftests/hid: fix compilation when bpf_wq and hid_device are not exported



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: default avatarkernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202603111558.KLCIxsZB-lkp@intel.com/


Fixes: fe8d561d ("selftests/hid: add wq test for hid_bpf_input_report()")
Cc: stable@vger.kernel.org
Acked-by: default avatarJiri Kosina <jkosina@suse.com>
Reviewed-by: default avatarThomas Weißschuh <thomas.weissschuh@linutronix.de>
Signed-off-by: default avatarBenjamin Tissoires <bentiss@kernel.org>
parent 0a3fe972
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -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
@@ -27,8 +29,10 @@

#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;