* [PATCH bpf-next] selftests/bpf: check if distilled base inherits source endianness
@ 2024-08-30 17:34 Eduard Zingerman
2024-08-30 17:36 ` Eduard Zingerman
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Eduard Zingerman @ 2024-08-30 17:34 UTC (permalink / raw)
To: bpf, ast
Cc: andrii, daniel, martin.lau, kernel-team, yonghong.song,
tony.ambardar, alan.maguire, Eduard Zingerman
Create a BTF with endianness different from host, make a distilled
base/split BTF pair from it, dump as raw bytes, import again and
verify that endianness is preserved.
Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
---
.../selftests/bpf/prog_tests/btf_distill.c | 73 +++++++++++++++++++
1 file changed, 73 insertions(+)
diff --git a/tools/testing/selftests/bpf/prog_tests/btf_distill.c b/tools/testing/selftests/bpf/prog_tests/btf_distill.c
index bfbe795823a2..810b2e434562 100644
--- a/tools/testing/selftests/bpf/prog_tests/btf_distill.c
+++ b/tools/testing/selftests/bpf/prog_tests/btf_distill.c
@@ -535,6 +535,77 @@ static void test_distilled_base_vmlinux(void)
btf__free(vmlinux_btf);
}
+static bool is_host_big_endian(void)
+{
+ return htons(0x1234) == 0x1234;
+}
+
+/* Split and new base BTFs should inherit endianness from source BTF. */
+static void test_distilled_endianness(void)
+{
+ struct btf *base = NULL, *split = NULL, *new_base = NULL, *new_split = NULL;
+ struct btf *new_base1 = NULL, *new_split1 = NULL;
+ enum btf_endianness inverse_endianness;
+ const void *raw_data;
+ __u32 size;
+
+ printf("is_host_big_endian? %d\n", is_host_big_endian());
+ inverse_endianness = is_host_big_endian() ? BTF_LITTLE_ENDIAN : BTF_BIG_ENDIAN;
+ base = btf__new_empty();
+ btf__set_endianness(base, inverse_endianness);
+ if (!ASSERT_OK_PTR(base, "empty_main_btf"))
+ return;
+ btf__add_int(base, "int", 4, BTF_INT_SIGNED); /* [1] int */
+ VALIDATE_RAW_BTF(
+ base,
+ "[1] INT 'int' size=4 bits_offset=0 nr_bits=32 encoding=SIGNED");
+ split = btf__new_empty_split(base);
+ if (!ASSERT_OK_PTR(split, "empty_split_btf"))
+ goto cleanup;
+ btf__add_ptr(split, 1);
+ VALIDATE_RAW_BTF(
+ split,
+ "[1] INT 'int' size=4 bits_offset=0 nr_bits=32 encoding=SIGNED",
+ "[2] PTR '(anon)' type_id=1");
+ if (!ASSERT_EQ(0, btf__distill_base(split, &new_base, &new_split),
+ "distilled_base") ||
+ !ASSERT_OK_PTR(new_base, "distilled_base") ||
+ !ASSERT_OK_PTR(new_split, "distilled_split") ||
+ !ASSERT_EQ(2, btf__type_cnt(new_base), "distilled_base_type_cnt"))
+ goto cleanup;
+ VALIDATE_RAW_BTF(
+ new_split,
+ "[1] INT 'int' size=4 bits_offset=0 nr_bits=32 encoding=SIGNED",
+ "[2] PTR '(anon)' type_id=1");
+
+ raw_data = btf__raw_data(new_base, &size);
+ if (!ASSERT_OK_PTR(raw_data, "btf__raw_data #1"))
+ goto cleanup;
+ new_base1 = btf__new(raw_data, size);
+ if (!ASSERT_OK_PTR(new_base1, "new_base1 = btf__new()"))
+ goto cleanup;
+ raw_data = btf__raw_data(new_split, &size);
+ if (!ASSERT_OK_PTR(raw_data, "btf__raw_data #2"))
+ goto cleanup;
+ new_split1 = btf__new_split(raw_data, size, new_base1);
+ if (!ASSERT_OK_PTR(new_split1, "new_split1 = btf__new()"))
+ goto cleanup;
+
+ ASSERT_EQ(btf__endianness(new_base1), inverse_endianness, "new_base1 endianness");
+ ASSERT_EQ(btf__endianness(new_split1), inverse_endianness, "new_split1 endianness");
+ VALIDATE_RAW_BTF(
+ new_split1,
+ "[1] INT 'int' size=4 bits_offset=0 nr_bits=32 encoding=SIGNED",
+ "[2] PTR '(anon)' type_id=1");
+cleanup:
+ btf__free(new_split1);
+ btf__free(new_base1);
+ btf__free(new_split);
+ btf__free(new_base);
+ btf__free(split);
+ btf__free(base);
+}
+
void test_btf_distill(void)
{
if (test__start_subtest("distilled_base"))
@@ -549,4 +620,6 @@ void test_btf_distill(void)
test_distilled_base_multi_err2();
if (test__start_subtest("distilled_base_vmlinux"))
test_distilled_base_vmlinux();
+ if (test__start_subtest("distilled_endianness"))
+ test_distilled_endianness();
}
--
2.46.0
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH bpf-next] selftests/bpf: check if distilled base inherits source endianness
2024-08-30 17:34 [PATCH bpf-next] selftests/bpf: check if distilled base inherits source endianness Eduard Zingerman
@ 2024-08-30 17:36 ` Eduard Zingerman
2024-08-30 17:51 ` Andrii Nakryiko
` (2 subsequent siblings)
3 siblings, 0 replies; 7+ messages in thread
From: Eduard Zingerman @ 2024-08-30 17:36 UTC (permalink / raw)
To: bpf, ast
Cc: andrii, daniel, martin.lau, kernel-team, yonghong.song,
tony.ambardar, alan.maguire
On Fri, 2024-08-30 at 10:34 -0700, Eduard Zingerman wrote:
> Create a BTF with endianness different from host, make a distilled
> base/split BTF pair from it, dump as raw bytes, import again and
> verify that endianness is preserved.
>
> Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
> ---
Note: this would fail on CI unless [1] is applied.
[1] https://lore.kernel.org/bpf/20240830095150.278881-1-tony.ambardar@gmail.com/
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH bpf-next] selftests/bpf: check if distilled base inherits source endianness
2024-08-30 17:34 [PATCH bpf-next] selftests/bpf: check if distilled base inherits source endianness Eduard Zingerman
2024-08-30 17:36 ` Eduard Zingerman
@ 2024-08-30 17:51 ` Andrii Nakryiko
2024-08-30 17:53 ` Eduard Zingerman
2024-08-30 17:52 ` Alan Maguire
2024-08-30 18:00 ` patchwork-bot+netdevbpf
3 siblings, 1 reply; 7+ messages in thread
From: Andrii Nakryiko @ 2024-08-30 17:51 UTC (permalink / raw)
To: Eduard Zingerman
Cc: bpf, ast, andrii, daniel, martin.lau, kernel-team, yonghong.song,
tony.ambardar, alan.maguire
On Fri, Aug 30, 2024 at 10:34 AM Eduard Zingerman <eddyz87@gmail.com> wrote:
>
> Create a BTF with endianness different from host, make a distilled
> base/split BTF pair from it, dump as raw bytes, import again and
> verify that endianness is preserved.
>
> Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
> ---
> .../selftests/bpf/prog_tests/btf_distill.c | 73 +++++++++++++++++++
> 1 file changed, 73 insertions(+)
>
> diff --git a/tools/testing/selftests/bpf/prog_tests/btf_distill.c b/tools/testing/selftests/bpf/prog_tests/btf_distill.c
> index bfbe795823a2..810b2e434562 100644
> --- a/tools/testing/selftests/bpf/prog_tests/btf_distill.c
> +++ b/tools/testing/selftests/bpf/prog_tests/btf_distill.c
> @@ -535,6 +535,77 @@ static void test_distilled_base_vmlinux(void)
> btf__free(vmlinux_btf);
> }
>
> +static bool is_host_big_endian(void)
> +{
> + return htons(0x1234) == 0x1234;
> +}
> +
> +/* Split and new base BTFs should inherit endianness from source BTF. */
> +static void test_distilled_endianness(void)
> +{
> + struct btf *base = NULL, *split = NULL, *new_base = NULL, *new_split = NULL;
> + struct btf *new_base1 = NULL, *new_split1 = NULL;
> + enum btf_endianness inverse_endianness;
> + const void *raw_data;
> + __u32 size;
> +
> + printf("is_host_big_endian? %d\n", is_host_big_endian());
removed printf
> + inverse_endianness = is_host_big_endian() ? BTF_LITTLE_ENDIAN : BTF_BIG_ENDIAN;
> + base = btf__new_empty();
> + btf__set_endianness(base, inverse_endianness);
> + if (!ASSERT_OK_PTR(base, "empty_main_btf"))
moved check before set_endianness
applied to bpf-next after Tony's endianness fix, thanks!
> + return;
> + btf__add_int(base, "int", 4, BTF_INT_SIGNED); /* [1] int */
> + VALIDATE_RAW_BTF(
> + base,
> + "[1] INT 'int' size=4 bits_offset=0 nr_bits=32 encoding=SIGNED");
> + split = btf__new_empty_split(base);
> + if (!ASSERT_OK_PTR(split, "empty_split_btf"))
> + goto cleanup;
> + btf__add_ptr(split, 1);
[...]
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH bpf-next] selftests/bpf: check if distilled base inherits source endianness
2024-08-30 17:51 ` Andrii Nakryiko
@ 2024-08-30 17:53 ` Eduard Zingerman
0 siblings, 0 replies; 7+ messages in thread
From: Eduard Zingerman @ 2024-08-30 17:53 UTC (permalink / raw)
To: Andrii Nakryiko
Cc: bpf, ast, andrii, daniel, martin.lau, kernel-team, yonghong.song,
tony.ambardar, alan.maguire
On Fri, 2024-08-30 at 10:51 -0700, Andrii Nakryiko wrote:
[...]
> > +/* Split and new base BTFs should inherit endianness from source BTF. */
> > +static void test_distilled_endianness(void)
> > +{
> > + struct btf *base = NULL, *split = NULL, *new_base = NULL, *new_split = NULL;
> > + struct btf *new_base1 = NULL, *new_split1 = NULL;
> > + enum btf_endianness inverse_endianness;
> > + const void *raw_data;
> > + __u32 size;
> > +
> > + printf("is_host_big_endian? %d\n", is_host_big_endian());
>
> removed printf
:facepalm:, sorry, my bad.
[...]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH bpf-next] selftests/bpf: check if distilled base inherits source endianness
2024-08-30 17:34 [PATCH bpf-next] selftests/bpf: check if distilled base inherits source endianness Eduard Zingerman
2024-08-30 17:36 ` Eduard Zingerman
2024-08-30 17:51 ` Andrii Nakryiko
@ 2024-08-30 17:52 ` Alan Maguire
2024-08-30 17:56 ` Andrii Nakryiko
2024-08-30 18:00 ` patchwork-bot+netdevbpf
3 siblings, 1 reply; 7+ messages in thread
From: Alan Maguire @ 2024-08-30 17:52 UTC (permalink / raw)
To: Eduard Zingerman, bpf, ast
Cc: andrii, daniel, martin.lau, kernel-team, yonghong.song,
tony.ambardar
On 30/08/2024 18:34, Eduard Zingerman wrote:
> Create a BTF with endianness different from host, make a distilled
> base/split BTF pair from it, dump as raw bytes, import again and
> verify that endianness is preserved.
>
> Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
One small thing below, but
Reviewed-by: Alan Maguire <alan.maguire@oracle.com>
Tested-by: Alan Maguire <alan.maguire@oracle.com>
Thanks!
> ---
> .../selftests/bpf/prog_tests/btf_distill.c | 73 +++++++++++++++++++
> 1 file changed, 73 insertions(+)
>
> diff --git a/tools/testing/selftests/bpf/prog_tests/btf_distill.c b/tools/testing/selftests/bpf/prog_tests/btf_distill.c
> index bfbe795823a2..810b2e434562 100644
> --- a/tools/testing/selftests/bpf/prog_tests/btf_distill.c
> +++ b/tools/testing/selftests/bpf/prog_tests/btf_distill.c
> @@ -535,6 +535,77 @@ static void test_distilled_base_vmlinux(void)
> btf__free(vmlinux_btf);
> }
>
> +static bool is_host_big_endian(void)
> +{
> + return htons(0x1234) == 0x1234;
> +}
> +
> +/* Split and new base BTFs should inherit endianness from source BTF. */
> +static void test_distilled_endianness(void)
> +{
> + struct btf *base = NULL, *split = NULL, *new_base = NULL, *new_split = NULL;
> + struct btf *new_base1 = NULL, *new_split1 = NULL;
> + enum btf_endianness inverse_endianness;
> + const void *raw_data;
> + __u32 size;
> +
> + printf("is_host_big_endian? %d\n", is_host_big_endian());
> + inverse_endianness = is_host_big_endian() ? BTF_LITTLE_ENDIAN : BTF_BIG_ENDIAN;
> + base = btf__new_empty();
nit: I think you could avoid the need for is_host_big_endian() by doing
this:
inverse_endianness = btf__endianness(base) == BTF_LITTLE_ENDIAN ?
BTF_BIG_ENDIAN : BTF_LITTLE_ENDIAN;
> + btf__set_endianness(base, inverse_endianness);
> + if (!ASSERT_OK_PTR(base, "empty_main_btf"))
> + return;
> + btf__add_int(base, "int", 4, BTF_INT_SIGNED); /* [1] int */
> + VALIDATE_RAW_BTF(
> + base,
> + "[1] INT 'int' size=4 bits_offset=0 nr_bits=32 encoding=SIGNED");
> + split = btf__new_empty_split(base);
> + if (!ASSERT_OK_PTR(split, "empty_split_btf"))
> + goto cleanup;
> + btf__add_ptr(split, 1);
> + VALIDATE_RAW_BTF(
> + split,
> + "[1] INT 'int' size=4 bits_offset=0 nr_bits=32 encoding=SIGNED",
> + "[2] PTR '(anon)' type_id=1");
> + if (!ASSERT_EQ(0, btf__distill_base(split, &new_base, &new_split),
> + "distilled_base") ||
> + !ASSERT_OK_PTR(new_base, "distilled_base") ||
> + !ASSERT_OK_PTR(new_split, "distilled_split") ||
> + !ASSERT_EQ(2, btf__type_cnt(new_base), "distilled_base_type_cnt"))
> + goto cleanup;
> + VALIDATE_RAW_BTF(
> + new_split,
> + "[1] INT 'int' size=4 bits_offset=0 nr_bits=32 encoding=SIGNED",
> + "[2] PTR '(anon)' type_id=1");
> +
> + raw_data = btf__raw_data(new_base, &size);
> + if (!ASSERT_OK_PTR(raw_data, "btf__raw_data #1"))
> + goto cleanup;
> + new_base1 = btf__new(raw_data, size);
> + if (!ASSERT_OK_PTR(new_base1, "new_base1 = btf__new()"))
> + goto cleanup;
> + raw_data = btf__raw_data(new_split, &size);
> + if (!ASSERT_OK_PTR(raw_data, "btf__raw_data #2"))
> + goto cleanup;
> + new_split1 = btf__new_split(raw_data, size, new_base1);
> + if (!ASSERT_OK_PTR(new_split1, "new_split1 = btf__new()"))
> + goto cleanup;
> +
> + ASSERT_EQ(btf__endianness(new_base1), inverse_endianness, "new_base1 endianness");
> + ASSERT_EQ(btf__endianness(new_split1), inverse_endianness, "new_split1 endianness");
> + VALIDATE_RAW_BTF(
> + new_split1,
> + "[1] INT 'int' size=4 bits_offset=0 nr_bits=32 encoding=SIGNED",
> + "[2] PTR '(anon)' type_id=1");
> +cleanup:
> + btf__free(new_split1);
> + btf__free(new_base1);
> + btf__free(new_split);
> + btf__free(new_base);
> + btf__free(split);
> + btf__free(base);
> +}
> +
> void test_btf_distill(void)
> {
> if (test__start_subtest("distilled_base"))
> @@ -549,4 +620,6 @@ void test_btf_distill(void)
> test_distilled_base_multi_err2();
> if (test__start_subtest("distilled_base_vmlinux"))
> test_distilled_base_vmlinux();
> + if (test__start_subtest("distilled_endianness"))
> + test_distilled_endianness();
> }
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH bpf-next] selftests/bpf: check if distilled base inherits source endianness
2024-08-30 17:52 ` Alan Maguire
@ 2024-08-30 17:56 ` Andrii Nakryiko
0 siblings, 0 replies; 7+ messages in thread
From: Andrii Nakryiko @ 2024-08-30 17:56 UTC (permalink / raw)
To: Alan Maguire
Cc: Eduard Zingerman, bpf, ast, andrii, daniel, martin.lau,
kernel-team, yonghong.song, tony.ambardar
On Fri, Aug 30, 2024 at 10:54 AM Alan Maguire <alan.maguire@oracle.com> wrote:
>
> On 30/08/2024 18:34, Eduard Zingerman wrote:
> > Create a BTF with endianness different from host, make a distilled
> > base/split BTF pair from it, dump as raw bytes, import again and
> > verify that endianness is preserved.
> >
> > Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
>
> One small thing below, but
>
> Reviewed-by: Alan Maguire <alan.maguire@oracle.com>
> Tested-by: Alan Maguire <alan.maguire@oracle.com>
will add and force-push, thanks
>
> Thanks!
>
> > ---
> > .../selftests/bpf/prog_tests/btf_distill.c | 73 +++++++++++++++++++
> > 1 file changed, 73 insertions(+)
> >
> > diff --git a/tools/testing/selftests/bpf/prog_tests/btf_distill.c b/tools/testing/selftests/bpf/prog_tests/btf_distill.c
> > index bfbe795823a2..810b2e434562 100644
> > --- a/tools/testing/selftests/bpf/prog_tests/btf_distill.c
> > +++ b/tools/testing/selftests/bpf/prog_tests/btf_distill.c
> > @@ -535,6 +535,77 @@ static void test_distilled_base_vmlinux(void)
> > btf__free(vmlinux_btf);
> > }
> >
> > +static bool is_host_big_endian(void)
> > +{
> > + return htons(0x1234) == 0x1234;
> > +}
> > +
> > +/* Split and new base BTFs should inherit endianness from source BTF. */
> > +static void test_distilled_endianness(void)
> > +{
> > + struct btf *base = NULL, *split = NULL, *new_base = NULL, *new_split = NULL;
> > + struct btf *new_base1 = NULL, *new_split1 = NULL;
> > + enum btf_endianness inverse_endianness;
> > + const void *raw_data;
> > + __u32 size;
> > +
> > + printf("is_host_big_endian? %d\n", is_host_big_endian());
> > + inverse_endianness = is_host_big_endian() ? BTF_LITTLE_ENDIAN : BTF_BIG_ENDIAN;
> > + base = btf__new_empty();
>
>
> nit: I think you could avoid the need for is_host_big_endian() by doing
> this:
>
> inverse_endianness = btf__endianness(base) == BTF_LITTLE_ENDIAN ?
> BTF_BIG_ENDIAN : BTF_LITTLE_ENDIAN;
good point, I'll fix it up
>
>
> > + btf__set_endianness(base, inverse_endianness);
> > + if (!ASSERT_OK_PTR(base, "empty_main_btf"))
> > + return;
> > + btf__add_int(base, "int", 4, BTF_INT_SIGNED); /* [1] int */
> > + VALIDATE_RAW_BTF(
> > + base,
> > + "[1] INT 'int' size=4 bits_offset=0 nr_bits=32 encoding=SIGNED");
> > + split = btf__new_empty_split(base);
> > + if (!ASSERT_OK_PTR(split, "empty_split_btf"))
> > + goto cleanup;
> > + btf__add_ptr(split, 1);
> > + VALIDATE_RAW_BTF(
> > + split,
> > + "[1] INT 'int' size=4 bits_offset=0 nr_bits=32 encoding=SIGNED",
> > + "[2] PTR '(anon)' type_id=1");
> > + if (!ASSERT_EQ(0, btf__distill_base(split, &new_base, &new_split),
> > + "distilled_base") ||
> > + !ASSERT_OK_PTR(new_base, "distilled_base") ||
> > + !ASSERT_OK_PTR(new_split, "distilled_split") ||
> > + !ASSERT_EQ(2, btf__type_cnt(new_base), "distilled_base_type_cnt"))
> > + goto cleanup;
> > + VALIDATE_RAW_BTF(
> > + new_split,
> > + "[1] INT 'int' size=4 bits_offset=0 nr_bits=32 encoding=SIGNED",
> > + "[2] PTR '(anon)' type_id=1");
> > +
> > + raw_data = btf__raw_data(new_base, &size);
> > + if (!ASSERT_OK_PTR(raw_data, "btf__raw_data #1"))
> > + goto cleanup;
> > + new_base1 = btf__new(raw_data, size);
> > + if (!ASSERT_OK_PTR(new_base1, "new_base1 = btf__new()"))
> > + goto cleanup;
> > + raw_data = btf__raw_data(new_split, &size);
> > + if (!ASSERT_OK_PTR(raw_data, "btf__raw_data #2"))
> > + goto cleanup;
> > + new_split1 = btf__new_split(raw_data, size, new_base1);
> > + if (!ASSERT_OK_PTR(new_split1, "new_split1 = btf__new()"))
> > + goto cleanup;
> > +
> > + ASSERT_EQ(btf__endianness(new_base1), inverse_endianness, "new_base1 endianness");
> > + ASSERT_EQ(btf__endianness(new_split1), inverse_endianness, "new_split1 endianness");
> > + VALIDATE_RAW_BTF(
> > + new_split1,
> > + "[1] INT 'int' size=4 bits_offset=0 nr_bits=32 encoding=SIGNED",
> > + "[2] PTR '(anon)' type_id=1");
> > +cleanup:
> > + btf__free(new_split1);
> > + btf__free(new_base1);
> > + btf__free(new_split);
> > + btf__free(new_base);
> > + btf__free(split);
> > + btf__free(base);
> > +}
> > +
> > void test_btf_distill(void)
> > {
> > if (test__start_subtest("distilled_base"))
> > @@ -549,4 +620,6 @@ void test_btf_distill(void)
> > test_distilled_base_multi_err2();
> > if (test__start_subtest("distilled_base_vmlinux"))
> > test_distilled_base_vmlinux();
> > + if (test__start_subtest("distilled_endianness"))
> > + test_distilled_endianness();
> > }
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH bpf-next] selftests/bpf: check if distilled base inherits source endianness
2024-08-30 17:34 [PATCH bpf-next] selftests/bpf: check if distilled base inherits source endianness Eduard Zingerman
` (2 preceding siblings ...)
2024-08-30 17:52 ` Alan Maguire
@ 2024-08-30 18:00 ` patchwork-bot+netdevbpf
3 siblings, 0 replies; 7+ messages in thread
From: patchwork-bot+netdevbpf @ 2024-08-30 18:00 UTC (permalink / raw)
To: Eduard Zingerman
Cc: bpf, ast, andrii, daniel, martin.lau, kernel-team, yonghong.song,
tony.ambardar, alan.maguire
Hello:
This patch was applied to bpf/bpf-next.git (master)
by Andrii Nakryiko <andrii@kernel.org>:
On Fri, 30 Aug 2024 10:34:06 -0700 you wrote:
> Create a BTF with endianness different from host, make a distilled
> base/split BTF pair from it, dump as raw bytes, import again and
> verify that endianness is preserved.
>
> Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
> ---
> .../selftests/bpf/prog_tests/btf_distill.c | 73 +++++++++++++++++++
> 1 file changed, 73 insertions(+)
Here is the summary with links:
- [bpf-next] selftests/bpf: check if distilled base inherits source endianness
https://git.kernel.org/bpf/bpf-next/c/217c4dfec4a6
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-08-30 18:00 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-30 17:34 [PATCH bpf-next] selftests/bpf: check if distilled base inherits source endianness Eduard Zingerman
2024-08-30 17:36 ` Eduard Zingerman
2024-08-30 17:51 ` Andrii Nakryiko
2024-08-30 17:53 ` Eduard Zingerman
2024-08-30 17:52 ` Alan Maguire
2024-08-30 17:56 ` Andrii Nakryiko
2024-08-30 18:00 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox