public inbox for bpf@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH bpf-next v2 0/6] Add support to emit verifier warnings
@ 2026-04-08  2:13 Kumar Kartikeya Dwivedi
  2026-04-08  2:13 ` [PATCH bpf-next v2 1/6] bpf: Add support for verifier warning messages Kumar Kartikeya Dwivedi
                   ` (7 more replies)
  0 siblings, 8 replies; 13+ messages in thread
From: Kumar Kartikeya Dwivedi @ 2026-04-08  2:13 UTC (permalink / raw)
  To: bpf
  Cc: Alexei Starovoitov, Andrii Nakryiko, Daniel Borkmann,
	Martin KaFai Lau, Eduard Zingerman, Ihor Solodrai, kkd,
	kernel-team

Currently, there are only two ways of communicating information to the user
when a program is verified, success or failure with a verbose verifier log.
Some information is meant to be more discretionary, e.g. warning about use of
kfuncs that are deprecated, and may be removed in future kernel releases.

An example is shown below.

$ ./test_progs -t kfunc_implicit_args/test_kfunc_implicit_arg_legacy_impl -v
...
2: (b7) r3 = 0                        ; R3=0
3: (85) call bpf_kfunc_implicit_arg_legacy_impl#114683
kfunc_implicit_args.c:40 (insn #3) uses deprecated kfunc bpf_kfunc_implicit_arg_legacy_impl(), which will be removed.
Switch to kfunc bpf_kfunc_implicit_arg_legacy() instead.
For older kernels, choose the correct kfunc using bpf_ksym_exists().
4: R0=scalar()
4: (95) exit
...

With verbose logging, the deprecation warnings are printed inline in the
verifier log. When no log level is chosen, the warning is printed in a
block, as follows:

libbpf: prog 'test_kfunc_implicit_arg_legacy_impl': -- BEGIN PROG LOAD WARNINGS --
kfunc_implicit_args.c:40 (insn #3) uses deprecated kfunc bpf_kfunc_implicit_arg_legacy_impl(), which will be removed.
Switch to kfunc bpf_kfunc_implicit_arg_legacy() instead.
For older kernels, choose the correct kfunc using bpf_ksym_exists().
-- END PROG LOAD WARNINGS --

The set was tested with and without kernel changes applied, so that we
could conclude that libbpf feature detection works correctly and
backwards compatibility is not violated on older kernels. Still, it
would be helpful if other reviewers could recheck all assumptions and
make sure I didn't miss any corner case.

One case I need more opinions on: log_buf.c passes log_buf with
log_level=0 and expects it to be empty, with newer libbpf that won't be
true on older kernels anymore. I don't think this is something that
needs to be addressed, but explicitly noting it here since I saw that
test fail when testing new libbpf on older kernels. The kernel will now
populate such log_buf will "processed N insns ..." log since on failure
libbpf will retry with log_level=1, so unless applications are relying
on log_buf to be empty for correctness it should be ok.

Changelog:
----------
v1 -> v2
v1: https://lore.kernel.org/bpf/20260329212534.3270005-1-memxor@gmail.com

 * Use BTF tags and kfunc flags for deprecation warnings.
 * Reuse verifier log to deliver log messages. (Alexei)
 * Make the mechanism declarative without kfunc lists in verifier.c.

Kumar Kartikeya Dwivedi (6):
  bpf: Add support for verifier warning messages
  bpf: Extract bpf_get_linfo_file_line
  bpf: Make find_linfo widely available
  bpf: Use KF_DEPRECATED to emit verifier warnings
  bpf: Add __bpf_kfunc_replacement() annotation
  libbpf: Flush verifier warning messages by default

 include/linux/bpf.h                           |  3 +
 include/linux/bpf_verifier.h                  |  1 +
 include/linux/btf.h                           |  6 ++
 include/linux/compiler_types.h                | 14 +++-
 kernel/bpf/core.c                             | 66 ++++++++++++++++---
 kernel/bpf/helpers.c                          | 24 ++++---
 kernel/bpf/log.c                              | 49 +-------------
 kernel/bpf/verifier.c                         | 60 ++++++++++++++++-
 tools/lib/bpf/bpf.c                           |  5 +-
 tools/lib/bpf/features.c                      | 56 ++++++++++++++++
 tools/lib/bpf/libbpf.c                        | 20 ++++--
 tools/lib/bpf/libbpf_internal.h               |  2 +
 .../selftests/bpf/test_kmods/bpf_testmod.c    |  3 +-
 13 files changed, 233 insertions(+), 76 deletions(-)


base-commit: 5c662b1c1789f51f79ee9c648681abc8410dfa81
-- 
2.52.0


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

end of thread, other threads:[~2026-04-09  1:20 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-08  2:13 [PATCH bpf-next v2 0/6] Add support to emit verifier warnings Kumar Kartikeya Dwivedi
2026-04-08  2:13 ` [PATCH bpf-next v2 1/6] bpf: Add support for verifier warning messages Kumar Kartikeya Dwivedi
2026-04-08  8:46   ` sun jian
2026-04-08  2:13 ` [PATCH bpf-next v2 2/6] bpf: Extract bpf_get_linfo_file_line Kumar Kartikeya Dwivedi
2026-04-08  2:13 ` [PATCH bpf-next v2 3/6] bpf: Make find_linfo widely available Kumar Kartikeya Dwivedi
2026-04-08 15:46   ` Mykyta Yatsenko
2026-04-08  2:13 ` [PATCH bpf-next v2 4/6] bpf: Use KF_DEPRECATED to emit verifier warnings Kumar Kartikeya Dwivedi
2026-04-08  2:13 ` [PATCH bpf-next v2 5/6] bpf: Add __bpf_kfunc_replacement() annotation Kumar Kartikeya Dwivedi
2026-04-08  2:13 ` [PATCH bpf-next v2 6/6] libbpf: Flush verifier warning messages by default Kumar Kartikeya Dwivedi
2026-04-08  2:21   ` Kumar Kartikeya Dwivedi
2026-04-08 14:55 ` [PATCH bpf-next v2 0/6] Add support to emit verifier warnings Leon Hwang
2026-04-08 15:30   ` Leon Hwang
2026-04-09  1:20 ` 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