From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
To: Greg KH <gregkh@linuxfoundation.org>,
Jiri Kosina <jikos@kernel.org>,
Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Andrii Nakryiko <andrii@kernel.org>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: Tero Kristo <tero.kristo@linux.intel.com>,
linux-kernel@vger.kernel.org, linux-input@vger.kernel.org,
netdev@vger.kernel.org, bpf@vger.kernel.org,
linux-kselftest@vger.kernel.org,
Benjamin Tissoires <benjamin.tissoires@redhat.com>
Subject: [PATCH HID for-next v1 3/9] selftests: hid: attach/detach 2 bpf programs, not just one
Date: Fri, 6 Jan 2023 11:23:26 +0100 [thread overview]
Message-ID: <20230106102332.1019632-4-benjamin.tissoires@redhat.com> (raw)
In-Reply-To: <20230106102332.1019632-1-benjamin.tissoires@redhat.com>
Add a second BPF program to attach to the device, as the development of
this feature showed that we also need to ensure we can detach multiple
programs to a device (hid_bpf_link->index was actually not set initially,
and this lead to any BPF program not being released except for the first
one).
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
---
tools/testing/selftests/hid/hid_bpf.c | 8 +++++++-
tools/testing/selftests/hid/progs/hid.c | 13 +++++++++++++
2 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/hid/hid_bpf.c b/tools/testing/selftests/hid/hid_bpf.c
index 6615c26fb5dd..d215bb492eb4 100644
--- a/tools/testing/selftests/hid/hid_bpf.c
+++ b/tools/testing/selftests/hid/hid_bpf.c
@@ -616,6 +616,7 @@ TEST_F(hid_bpf, test_attach_detach)
{
const struct test_program progs[] = {
{ .name = "hid_first_event" },
+ { .name = "hid_second_event" },
};
__u8 buf[10] = {0};
int err;
@@ -634,7 +635,10 @@ TEST_F(hid_bpf, test_attach_detach)
ASSERT_EQ(buf[0], 1);
ASSERT_EQ(buf[2], 47);
- /* pin the program and immediately unpin it */
+ /* make sure both programs are run */
+ ASSERT_EQ(buf[3], 52);
+
+ /* pin the first program and immediately unpin it */
#define PIN_PATH "/sys/fs/bpf/hid_first_event"
bpf_program__pin(self->skel->progs.hid_first_event, PIN_PATH);
remove(PIN_PATH);
@@ -660,6 +664,7 @@ TEST_F(hid_bpf, test_attach_detach)
ASSERT_EQ(buf[0], 1);
ASSERT_EQ(buf[1], 47);
ASSERT_EQ(buf[2], 0);
+ ASSERT_EQ(buf[3], 0);
/* re-attach our program */
@@ -677,6 +682,7 @@ TEST_F(hid_bpf, test_attach_detach)
ASSERT_EQ(err, 6) TH_LOG("read_hidraw");
ASSERT_EQ(buf[0], 1);
ASSERT_EQ(buf[2], 47);
+ ASSERT_EQ(buf[3], 52);
}
/*
diff --git a/tools/testing/selftests/hid/progs/hid.c b/tools/testing/selftests/hid/progs/hid.c
index 6a86af0aa545..88c593f753b5 100644
--- a/tools/testing/selftests/hid/progs/hid.c
+++ b/tools/testing/selftests/hid/progs/hid.c
@@ -32,6 +32,19 @@ int BPF_PROG(hid_first_event, struct hid_bpf_ctx *hid_ctx)
return hid_ctx->size;
}
+SEC("?fmod_ret/hid_bpf_device_event")
+int BPF_PROG(hid_second_event, struct hid_bpf_ctx *hid_ctx)
+{
+ __u8 *rw_data = hid_bpf_get_data(hid_ctx, 0 /* offset */, 4 /* size */);
+
+ if (!rw_data)
+ return 0; /* EPERM check */
+
+ rw_data[3] = rw_data[2] + 5;
+
+ return hid_ctx->size;
+}
+
SEC("?fmod_ret/hid_bpf_device_event")
int BPF_PROG(hid_change_report_id, struct hid_bpf_ctx *hid_ctx)
{
--
2.38.1
next prev parent reply other threads:[~2023-01-06 10:25 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-06 10:23 [PATCH HID for-next v1 0/9] HID-BPF LLVM fixes, no more hacks Benjamin Tissoires
2023-01-06 10:23 ` [PATCH HID for-next v1 1/9] selftests: hid: add vmtest.sh Benjamin Tissoires
2023-01-09 17:46 ` sdf
2023-01-09 17:56 ` sdf
2023-01-10 9:43 ` Benjamin Tissoires
2023-01-10 18:52 ` Stanislav Fomichev
2023-01-06 10:23 ` [PATCH HID for-next v1 2/9] selftests: hid: allow to compile hid_bpf with LLVM Benjamin Tissoires
2023-01-06 10:23 ` Benjamin Tissoires [this message]
2023-01-06 10:23 ` [PATCH HID for-next v1 4/9] selftests: hid: ensure the program is correctly pinned Benjamin Tissoires
2023-01-06 10:23 ` [PATCH HID for-next v1 5/9] selftests: hid: prepare tests for HID_BPF API change Benjamin Tissoires
2023-01-06 10:23 ` [PATCH HID for-next v1 6/9] HID: bpf: rework how programs are attached and stored in the kernel Benjamin Tissoires
2023-01-11 6:10 ` Alexei Starovoitov
2023-01-11 9:47 ` Benjamin Tissoires
2023-01-06 10:23 ` [PATCH HID for-next v1 7/9] selftests: hid: enforce new attach API Benjamin Tissoires
2023-01-06 10:23 ` [PATCH HID for-next v1 8/9] HID: bpf: clean up entrypoint Benjamin Tissoires
[not found] ` <202301062140.zfdqzE9b-lkp@intel.com>
2023-01-06 14:37 ` Benjamin Tissoires
2023-01-06 10:23 ` [PATCH HID for-next v1 9/9] HID: bpf: reorder BPF registration Benjamin Tissoires
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230106102332.1019632-4-benjamin.tissoires@redhat.com \
--to=benjamin.tissoires@redhat.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=dmitry.torokhov@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=jikos@kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=tero.kristo@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).