[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <2814828.mvXUDI8C0e@7940hx>
Date: Thu, 22 Jan 2026 10:18:58 +0800
From: Menglong Dong <menglong.dong@...ux.dev>
To: Menglong Dong <menglong8.dong@...il.com>,
Andrii Nakryiko <andrii.nakryiko@...il.com>
Cc: ast@...nel.org, andrii@...nel.org, daniel@...earbox.net,
martin.lau@...ux.dev, eddyz87@...il.com, song@...nel.org,
yonghong.song@...ux.dev, john.fastabend@...il.com, kpsingh@...nel.org,
sdf@...ichev.me, haoluo@...gle.com, jolsa@...nel.org, davem@...emloft.net,
dsahern@...nel.org, tglx@...utronix.de, mingo@...hat.com,
jiang.biao@...ux.dev, bp@...en8.de, dave.hansen@...ux.intel.com,
x86@...nel.org, hpa@...or.com, bpf@...r.kernel.org, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject:
Re: [PATCH bpf-next v10 11/12] selftests/bpf: add testcases for fsession
cookie
On 2026/1/22 08:07 Andrii Nakryiko <andrii.nakryiko@...il.com> write:
> On Thu, Jan 15, 2026 at 3:24 AM Menglong Dong <menglong8.dong@...il.com> wrote:
> >
> > Test session cookie for fsession. Multiple fsession BPF progs is attached
> > to bpf_fentry_test1() and session cookie is read and write in the
> > testcase.
> >
> > Signed-off-by: Menglong Dong <dongml2@...natelecom.cn>
> > ---
> > v3:
> > - restructure the testcase by combine the testcases for session cookie and
> > get_func_ip into one patch
> > ---
> > .../selftests/bpf/progs/fsession_test.c | 53 +++++++++++++++++++
> > 1 file changed, 53 insertions(+)
> >
> > diff --git a/tools/testing/selftests/bpf/progs/fsession_test.c b/tools/testing/selftests/bpf/progs/fsession_test.c
> > index f504984d42f2..4e55ca67db46 100644
> > --- a/tools/testing/selftests/bpf/progs/fsession_test.c
> > +++ b/tools/testing/selftests/bpf/progs/fsession_test.c
> > @@ -108,3 +108,56 @@ int BPF_PROG(test6, int a)
> > test6_entry_result = (const void *) addr == &bpf_fentry_test1;
> > return 0;
> > }
> > +
> > +__u64 test7_entry_ok = 0;
> > +__u64 test7_exit_ok = 0;
> > +SEC("fsession/bpf_fentry_test1")
> > +int BPF_PROG(test7, int a)
> > +{
> > + __u64 *cookie = bpf_session_cookie(ctx);
> > +
> > + if (!bpf_session_is_return(ctx)) {
> > + *cookie = 0xAAAABBBBCCCCDDDDull;
> > + test7_entry_ok = *cookie == 0xAAAABBBBCCCCDDDDull;
>
> you are trying to double-check that writing into *cookie preserves the
> written value, is that right? Do we need volatile read here to ensure
> that compiler doesn't optimize this?
Yeah, you are right. READ_ONCE and WRITE_ONCE should be used
here. I'll use them next version.
Thanks!
Menglong Dong
>
> > + return 0;
> > + }
> > +
> > + test7_exit_ok = *cookie == 0xAAAABBBBCCCCDDDDull;
> > + return 0;
> > +}
> > +
> > +__u64 test8_entry_ok = 0;
> > +__u64 test8_exit_ok = 0;
> > +
> > +SEC("fsession/bpf_fentry_test1")
> > +int BPF_PROG(test8, int a)
> > +{
> > + __u64 *cookie = bpf_session_cookie(ctx);
> > +
> > + if (!bpf_session_is_return(ctx)) {
> > + *cookie = 0x1111222233334444ull;
> > + test8_entry_ok = *cookie == 0x1111222233334444ull;
> > + return 0;
> > + }
> > +
> > + test8_exit_ok = *cookie == 0x1111222233334444ull;
> > + return 0;
> > +}
> > +
> > +__u64 test9_entry_result = 0;
> > +__u64 test9_exit_result = 0;
> > +
> > +SEC("fsession/bpf_fentry_test1")
> > +int BPF_PROG(test9, int a, int ret)
> > +{
> > + __u64 *cookie = bpf_session_cookie(ctx);
> > +
> > + if (!bpf_session_is_return(ctx)) {
> > + test9_entry_result = a == 1 && ret == 0;
> > + *cookie = 0x123456ULL;
> > + return 0;
> > + }
> > +
> > + test9_exit_result = a == 1 && ret == 2 && *cookie == 0x123456ULL;
> > + return 0;
> > +}
> > --
> > 2.52.0
> >
>
Powered by blists - more mailing lists