BPF List
 help / color / mirror / Atom feed
* [PATCH bpf-next 0/2] Ease BPF signing build requirements
@ 2025-11-14 22:22 Alan Maguire
  2025-11-14 22:22 ` [PATCH bpf-next 1/2] bpftool: Allow bpftool to build with openssl < 3 Alan Maguire
  2025-11-14 22:22 ` [PATCH bpf-next 2/2] selftests/bpf: Allow selftests to build with older xxd Alan Maguire
  0 siblings, 2 replies; 9+ messages in thread
From: Alan Maguire @ 2025-11-14 22:22 UTC (permalink / raw)
  To: qmo
  Cc: kpsingh, ast, andrii, daniel, martin.lau, eddyz87, song,
	yonghong.song, john.fastabend, sdf, haoluo, jolsa, bpf,
	Alan Maguire

This series makes it easier to build bpftool and selftests with
signing support, removing reliance on >= openssl v3 (supporting
openssl v1) to build bpftool and not requiring latest xxd to
build verification cert header in selftests.

Alan Maguire (2):
  bpftool: Allow bpftool to build with openssl < 3
  selftests/bpf: Allow selftests to build with older xxd

 tools/bpf/bpftool/sign.c             | 6 ++++++
 tools/testing/selftests/bpf/Makefile | 3 ++-
 2 files changed, 8 insertions(+), 1 deletion(-)

-- 
2.43.5


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH bpf-next 1/2] bpftool: Allow bpftool to build with openssl < 3
  2025-11-14 22:22 [PATCH bpf-next 0/2] Ease BPF signing build requirements Alan Maguire
@ 2025-11-14 22:22 ` Alan Maguire
  2025-11-14 22:55   ` Song Liu
  2025-11-14 22:22 ` [PATCH bpf-next 2/2] selftests/bpf: Allow selftests to build with older xxd Alan Maguire
  1 sibling, 1 reply; 9+ messages in thread
From: Alan Maguire @ 2025-11-14 22:22 UTC (permalink / raw)
  To: qmo
  Cc: kpsingh, ast, andrii, daniel, martin.lau, eddyz87, song,
	yonghong.song, john.fastabend, sdf, haoluo, jolsa, bpf,
	Alan Maguire

ERR_get_error_all()[1] is a openssl v3 API, so to make code
compatible with openssl v1 utilize ERR_get_err_line_data
instead.  Since openssl is already a build requirement for
the kernel (minimum requirement openssl 1.0.0), this will
allow bpftool to compile where opensslv3 is not available.
Signing-related BPF selftests pass with openssl v1.

[1] https://docs.openssl.org/3.4/man3/ERR_get_error/

Fixes: 40863f4d6ef2 ("bpftool: Add support for signing BPF programs")
Signed-off-by: Alan Maguire <alan.maguire@oracle.com>
---
 tools/bpf/bpftool/sign.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/tools/bpf/bpftool/sign.c b/tools/bpf/bpftool/sign.c
index b34f74d210e9..f9b742f4bb10 100644
--- a/tools/bpf/bpftool/sign.c
+++ b/tools/bpf/bpftool/sign.c
@@ -28,6 +28,12 @@
 
 #define OPEN_SSL_ERR_BUF_LEN 256
 
+/* Use deprecated in 3.0 ERR_get_error_line_data for openssl < 3 */
+#if !defined(OPENSSL_VERSION_MAJOR) || (OPENSSL_VERSION_MAJOR < 3)
+#define ERR_get_error_all(file, line, func, data, flags) \
+	ERR_get_error_line_data(file, line, data, flags)
+#endif
+
 static void display_openssl_errors(int l)
 {
 	char buf[OPEN_SSL_ERR_BUF_LEN];
-- 
2.43.5


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH bpf-next 2/2] selftests/bpf: Allow selftests to build with older xxd
  2025-11-14 22:22 [PATCH bpf-next 0/2] Ease BPF signing build requirements Alan Maguire
  2025-11-14 22:22 ` [PATCH bpf-next 1/2] bpftool: Allow bpftool to build with openssl < 3 Alan Maguire
@ 2025-11-14 22:22 ` Alan Maguire
  2025-11-14 23:06   ` bot+bpf-ci
  1 sibling, 1 reply; 9+ messages in thread
From: Alan Maguire @ 2025-11-14 22:22 UTC (permalink / raw)
  To: qmo
  Cc: kpsingh, ast, andrii, daniel, martin.lau, eddyz87, song,
	yonghong.song, john.fastabend, sdf, haoluo, jolsa, bpf,
	Alan Maguire

Currently selftests require xxd with the "-n <name>" option
which allows the user to specify a name not derived from
the input object path.  Instead of relying on this newer
feature, older xxd can be used if we link our desired name
("test_progs_verification_cert") to the input object.

Many distros ship xxd in vim-common package and do not have
the latest xxd with -n support.

Fixes: b720903e2b14d ("selftests/bpf: Enable signature verification for some lskel tests")
Signed-off-by: Alan Maguire <alan.maguire@oracle.com>
---
 tools/testing/selftests/bpf/Makefile | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
index 34ea23c63bd5..8687c17c5084 100644
--- a/tools/testing/selftests/bpf/Makefile
+++ b/tools/testing/selftests/bpf/Makefile
@@ -731,7 +731,8 @@ $(VERIFICATION_CERT) $(PRIVATE_KEY): $(VERIFY_SIG_SETUP)
 	$(Q)$(VERIFY_SIG_SETUP) genkey $(BUILD_DIR)
 
 $(VERIFY_SIG_HDR): $(VERIFICATION_CERT)
-	$(Q)xxd -i -n test_progs_verification_cert $< > $@
+	$(Q)ln -fs $< test_progs_verification_cert && \
+	xxd -i test_progs_verification_cert > $@
 
 # Define test_progs test runner.
 TRUNNER_TESTS_DIR := prog_tests
-- 
2.43.5


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH bpf-next 1/2] bpftool: Allow bpftool to build with openssl < 3
  2025-11-14 22:22 ` [PATCH bpf-next 1/2] bpftool: Allow bpftool to build with openssl < 3 Alan Maguire
@ 2025-11-14 22:55   ` Song Liu
  2025-11-14 23:03     ` Alan Maguire
  0 siblings, 1 reply; 9+ messages in thread
From: Song Liu @ 2025-11-14 22:55 UTC (permalink / raw)
  To: Alan Maguire
  Cc: qmo, kpsingh, ast, andrii, daniel, martin.lau, eddyz87, song,
	yonghong.song, john.fastabend, sdf, haoluo, jolsa, bpf

On Fri, Nov 14, 2025 at 2:23 PM Alan Maguire <alan.maguire@oracle.com> wrote:
>
> ERR_get_error_all()[1] is a openssl v3 API, so to make code
> compatible with openssl v1 utilize ERR_get_err_line_data
> instead.  Since openssl is already a build requirement for
> the kernel (minimum requirement openssl 1.0.0), this will
> allow bpftool to compile where opensslv3 is not available.
> Signing-related BPF selftests pass with openssl v1.
>
> [1] https://docs.openssl.org/3.4/man3/ERR_get_error/
>
> Fixes: 40863f4d6ef2 ("bpftool: Add support for signing BPF programs")
> Signed-off-by: Alan Maguire <alan.maguire@oracle.com>
> ---
>  tools/bpf/bpftool/sign.c | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/tools/bpf/bpftool/sign.c b/tools/bpf/bpftool/sign.c
> index b34f74d210e9..f9b742f4bb10 100644
> --- a/tools/bpf/bpftool/sign.c
> +++ b/tools/bpf/bpftool/sign.c
> @@ -28,6 +28,12 @@
>
>  #define OPEN_SSL_ERR_BUF_LEN 256
>
> +/* Use deprecated in 3.0 ERR_get_error_line_data for openssl < 3 */
> +#if !defined(OPENSSL_VERSION_MAJOR) || (OPENSSL_VERSION_MAJOR < 3)
> +#define ERR_get_error_all(file, line, func, data, flags) \
> +       ERR_get_error_line_data(file, line, data, flags)
> +#endif
> +

We have func=NULL in display_openssl_errors(). Shall we just use
ERR_get_error_line_data instead?

Thanks,
Song

>  static void display_openssl_errors(int l)
>  {
>         char buf[OPEN_SSL_ERR_BUF_LEN];
> --
> 2.43.5
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH bpf-next 1/2] bpftool: Allow bpftool to build with openssl < 3
  2025-11-14 22:55   ` Song Liu
@ 2025-11-14 23:03     ` Alan Maguire
  2025-11-14 23:17       ` Song Liu
  0 siblings, 1 reply; 9+ messages in thread
From: Alan Maguire @ 2025-11-14 23:03 UTC (permalink / raw)
  To: Song Liu
  Cc: qmo, kpsingh, ast, andrii, daniel, martin.lau, eddyz87,
	yonghong.song, john.fastabend, sdf, haoluo, jolsa, bpf

On 14/11/2025 22:55, Song Liu wrote:
> On Fri, Nov 14, 2025 at 2:23 PM Alan Maguire <alan.maguire@oracle.com> wrote:
>>
>> ERR_get_error_all()[1] is a openssl v3 API, so to make code
>> compatible with openssl v1 utilize ERR_get_err_line_data
>> instead.  Since openssl is already a build requirement for
>> the kernel (minimum requirement openssl 1.0.0), this will
>> allow bpftool to compile where opensslv3 is not available.
>> Signing-related BPF selftests pass with openssl v1.
>>
>> [1] https://docs.openssl.org/3.4/man3/ERR_get_error/
>>
>> Fixes: 40863f4d6ef2 ("bpftool: Add support for signing BPF programs")
>> Signed-off-by: Alan Maguire <alan.maguire@oracle.com>
>> ---
>>  tools/bpf/bpftool/sign.c | 6 ++++++
>>  1 file changed, 6 insertions(+)
>>
>> diff --git a/tools/bpf/bpftool/sign.c b/tools/bpf/bpftool/sign.c
>> index b34f74d210e9..f9b742f4bb10 100644
>> --- a/tools/bpf/bpftool/sign.c
>> +++ b/tools/bpf/bpftool/sign.c
>> @@ -28,6 +28,12 @@
>>
>>  #define OPEN_SSL_ERR_BUF_LEN 256
>>
>> +/* Use deprecated in 3.0 ERR_get_error_line_data for openssl < 3 */
>> +#if !defined(OPENSSL_VERSION_MAJOR) || (OPENSSL_VERSION_MAJOR < 3)
>> +#define ERR_get_error_all(file, line, func, data, flags) \
>> +       ERR_get_error_line_data(file, line, data, flags)
>> +#endif
>> +
> 
> We have func=NULL in display_openssl_errors(). Shall we just use
> ERR_get_error_line_data instead?
>

It's a good idea, and I tried it - unfortunately we then get a
"deprecated in v3" warning when we build with opensslv3. So this was the
only way I could think of to build on v1 and not get warnings with v3.

Thanks!

Alan

> Thanks,
> Song
> 
>>  static void display_openssl_errors(int l)
>>  {
>>         char buf[OPEN_SSL_ERR_BUF_LEN];
>> --
>> 2.43.5
>>


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH bpf-next 2/2] selftests/bpf: Allow selftests to build with older xxd
  2025-11-14 22:22 ` [PATCH bpf-next 2/2] selftests/bpf: Allow selftests to build with older xxd Alan Maguire
@ 2025-11-14 23:06   ` bot+bpf-ci
  2025-11-15 11:46     ` Alan Maguire
  0 siblings, 1 reply; 9+ messages in thread
From: bot+bpf-ci @ 2025-11-14 23:06 UTC (permalink / raw)
  To: alan.maguire, qmo
  Cc: kpsingh, ast, andrii, daniel, martin.lau, eddyz87, song,
	yonghong.song, john.fastabend, sdf, haoluo, jolsa, bpf,
	alan.maguire, ast, andrii, daniel, martin.lau, eddyz87,
	yonghong.song, clm, ihor.solodrai

[-- Attachment #1: Type: text/plain, Size: 1104 bytes --]

> diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
> index 34ea23c63..8687c17c5 100644
> --- a/tools/testing/selftests/bpf/Makefile
> +++ b/tools/testing/selftests/bpf/Makefile
> @@ -731,7 +731,8 @@ $(VERIFICATION_CERT) $(PRIVATE_KEY): $(VERIFY_SIG_SETUP)
>  	$(Q)$(VERIFY_SIG_SETUP) genkey $(BUILD_DIR)
>
>  $(VERIFY_SIG_HDR): $(VERIFICATION_CERT)
> -	$(Q)xxd -i -n test_progs_verification_cert $< > $@
> +	$(Q)ln -fs $< test_progs_verification_cert && \
> +	xxd -i test_progs_verification_cert > $@

Should the symlink test_progs_verification_cert be added to the cleanup
targets? Currently it's not included in EXTRA_CLEAN (lines 903-909), so
after running "make clean" the symlink will remain as a dangling link in
the source tree. This will appear as an untracked file in git status and
is not present in .gitignore.


---
AI reviewed your patch. Please fix the bug or email reply why it's not a bug.
See: https://github.com/kernel-patches/vmtest/blob/master/ci/claude/README.md

CI run summary: https://github.com/kernel-patches/bpf/actions/runs/19379374420

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH bpf-next 1/2] bpftool: Allow bpftool to build with openssl < 3
  2025-11-14 23:03     ` Alan Maguire
@ 2025-11-14 23:17       ` Song Liu
  2025-11-17 11:53         ` Quentin Monnet
  0 siblings, 1 reply; 9+ messages in thread
From: Song Liu @ 2025-11-14 23:17 UTC (permalink / raw)
  To: Alan Maguire
  Cc: Song Liu, qmo, kpsingh, ast, andrii, daniel, martin.lau, eddyz87,
	yonghong.song, john.fastabend, sdf, haoluo, jolsa, bpf

On Fri, Nov 14, 2025 at 3:04 PM Alan Maguire <alan.maguire@oracle.com> wrote:
>
> On 14/11/2025 22:55, Song Liu wrote:
> > On Fri, Nov 14, 2025 at 2:23 PM Alan Maguire <alan.maguire@oracle.com> wrote:
> >>
> >> ERR_get_error_all()[1] is a openssl v3 API, so to make code
> >> compatible with openssl v1 utilize ERR_get_err_line_data
> >> instead.  Since openssl is already a build requirement for
> >> the kernel (minimum requirement openssl 1.0.0), this will
> >> allow bpftool to compile where opensslv3 is not available.
> >> Signing-related BPF selftests pass with openssl v1.
> >>
> >> [1] https://docs.openssl.org/3.4/man3/ERR_get_error/
> >>
> >> Fixes: 40863f4d6ef2 ("bpftool: Add support for signing BPF programs")
> >> Signed-off-by: Alan Maguire <alan.maguire@oracle.com>
> >> ---
> >>  tools/bpf/bpftool/sign.c | 6 ++++++
> >>  1 file changed, 6 insertions(+)
> >>
> >> diff --git a/tools/bpf/bpftool/sign.c b/tools/bpf/bpftool/sign.c
> >> index b34f74d210e9..f9b742f4bb10 100644
> >> --- a/tools/bpf/bpftool/sign.c
> >> +++ b/tools/bpf/bpftool/sign.c
> >> @@ -28,6 +28,12 @@
> >>
> >>  #define OPEN_SSL_ERR_BUF_LEN 256
> >>
> >> +/* Use deprecated in 3.0 ERR_get_error_line_data for openssl < 3 */
> >> +#if !defined(OPENSSL_VERSION_MAJOR) || (OPENSSL_VERSION_MAJOR < 3)
> >> +#define ERR_get_error_all(file, line, func, data, flags) \
> >> +       ERR_get_error_line_data(file, line, data, flags)
> >> +#endif
> >> +
> >
> > We have func=NULL in display_openssl_errors(). Shall we just use
> > ERR_get_error_line_data instead?
> >
>
> It's a good idea, and I tried it - unfortunately we then get a
> "deprecated in v3" warning when we build with opensslv3. So this was the
> only way I could think of to build on v1 and not get warnings with v3.

I see. Thanks for the explanation. This looks good to me.

Acked-by: Song Liu <song@kernel.org>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH bpf-next 2/2] selftests/bpf: Allow selftests to build with older xxd
  2025-11-14 23:06   ` bot+bpf-ci
@ 2025-11-15 11:46     ` Alan Maguire
  0 siblings, 0 replies; 9+ messages in thread
From: Alan Maguire @ 2025-11-15 11:46 UTC (permalink / raw)
  To: bot+bpf-ci, qmo
  Cc: kpsingh, ast, andrii, daniel, martin.lau, eddyz87, song,
	yonghong.song, john.fastabend, sdf, haoluo, jolsa, bpf,
	martin.lau, clm, ihor.solodrai

On 14/11/2025 23:06, bot+bpf-ci@kernel.org wrote:
>> diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
>> index 34ea23c63..8687c17c5 100644
>> --- a/tools/testing/selftests/bpf/Makefile
>> +++ b/tools/testing/selftests/bpf/Makefile
>> @@ -731,7 +731,8 @@ $(VERIFICATION_CERT) $(PRIVATE_KEY): $(VERIFY_SIG_SETUP)
>>  	$(Q)$(VERIFY_SIG_SETUP) genkey $(BUILD_DIR)
>>
>>  $(VERIFY_SIG_HDR): $(VERIFICATION_CERT)
>> -	$(Q)xxd -i -n test_progs_verification_cert $< > $@
>> +	$(Q)ln -fs $< test_progs_verification_cert && \
>> +	xxd -i test_progs_verification_cert > $@
> 
> Should the symlink test_progs_verification_cert be added to the cleanup
> targets? Currently it's not included in EXTRA_CLEAN (lines 903-909), so
> after running "make clean" the symlink will remain as a dangling link in
> the source tree. This will appear as an untracked file in git status and
> is not present in .gitignore.
> 

yep, adding the symlink to EXTRA_CLEAN in Makefile and .gitignore is a
good catch; I'll wait to see if there's additional feedback before
sending a v2 with those changes.

Alan

> 
> ---
> AI reviewed your patch. Please fix the bug or email reply why it's not a bug.
> See: https://github.com/kernel-patches/vmtest/blob/master/ci/claude/README.md
> 
> CI run summary: https://github.com/kernel-patches/bpf/actions/runs/19379374420


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH bpf-next 1/2] bpftool: Allow bpftool to build with openssl < 3
  2025-11-14 23:17       ` Song Liu
@ 2025-11-17 11:53         ` Quentin Monnet
  0 siblings, 0 replies; 9+ messages in thread
From: Quentin Monnet @ 2025-11-17 11:53 UTC (permalink / raw)
  To: Alan Maguire
  Cc: Song Liu, kpsingh, ast, andrii, daniel, martin.lau, eddyz87,
	yonghong.song, john.fastabend, sdf, haoluo, jolsa, bpf

2025-11-14 15:17 UTC-0800 ~ Song Liu <song@kernel.org>
> On Fri, Nov 14, 2025 at 3:04 PM Alan Maguire <alan.maguire@oracle.com> wrote:
>>
>> On 14/11/2025 22:55, Song Liu wrote:
>>> On Fri, Nov 14, 2025 at 2:23 PM Alan Maguire <alan.maguire@oracle.com> wrote:
>>>>
>>>> ERR_get_error_all()[1] is a openssl v3 API, so to make code
>>>> compatible with openssl v1 utilize ERR_get_err_line_data
>>>> instead.  Since openssl is already a build requirement for
>>>> the kernel (minimum requirement openssl 1.0.0), this will
>>>> allow bpftool to compile where opensslv3 is not available.
>>>> Signing-related BPF selftests pass with openssl v1.
>>>>
>>>> [1] https://docs.openssl.org/3.4/man3/ERR_get_error/
>>>>
>>>> Fixes: 40863f4d6ef2 ("bpftool: Add support for signing BPF programs")
>>>> Signed-off-by: Alan Maguire <alan.maguire@oracle.com>
>>>> ---
>>>>  tools/bpf/bpftool/sign.c | 6 ++++++
>>>>  1 file changed, 6 insertions(+)
>>>>
>>>> diff --git a/tools/bpf/bpftool/sign.c b/tools/bpf/bpftool/sign.c
>>>> index b34f74d210e9..f9b742f4bb10 100644
>>>> --- a/tools/bpf/bpftool/sign.c
>>>> +++ b/tools/bpf/bpftool/sign.c
>>>> @@ -28,6 +28,12 @@
>>>>
>>>>  #define OPEN_SSL_ERR_BUF_LEN 256
>>>>
>>>> +/* Use deprecated in 3.0 ERR_get_error_line_data for openssl < 3 */
>>>> +#if !defined(OPENSSL_VERSION_MAJOR) || (OPENSSL_VERSION_MAJOR < 3)
>>>> +#define ERR_get_error_all(file, line, func, data, flags) \
>>>> +       ERR_get_error_line_data(file, line, data, flags)
>>>> +#endif
>>>> +
>>>
>>> We have func=NULL in display_openssl_errors(). Shall we just use
>>> ERR_get_error_line_data instead?
>>>
>>
>> It's a good idea, and I tried it - unfortunately we then get a
>> "deprecated in v3" warning when we build with opensslv3. So this was the
>> only way I could think of to build on v1 and not get warnings with v3.
> 
> I see. Thanks for the explanation. This looks good to me.
> 
> Acked-by: Song Liu <song@kernel.org>


Acked-by: Quentin Monnet <qmo@kernel.org>

Thank you Alan!

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2025-11-17 11:53 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-14 22:22 [PATCH bpf-next 0/2] Ease BPF signing build requirements Alan Maguire
2025-11-14 22:22 ` [PATCH bpf-next 1/2] bpftool: Allow bpftool to build with openssl < 3 Alan Maguire
2025-11-14 22:55   ` Song Liu
2025-11-14 23:03     ` Alan Maguire
2025-11-14 23:17       ` Song Liu
2025-11-17 11:53         ` Quentin Monnet
2025-11-14 22:22 ` [PATCH bpf-next 2/2] selftests/bpf: Allow selftests to build with older xxd Alan Maguire
2025-11-14 23:06   ` bot+bpf-ci
2025-11-15 11:46     ` Alan Maguire

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox