lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251126012656.3546071-1-ihor.solodrai@linux.dev>
Date: Tue, 25 Nov 2025 17:26:52 -0800
From: Ihor Solodrai <ihor.solodrai@...ux.dev>
To: Alexei Starovoitov <ast@...nel.org>,
	Daniel Borkmann <daniel@...earbox.net>,
	Andrii Nakryiko <andrii@...nel.org>,
	Martin KaFai Lau <martin.lau@...ux.dev>,
	Eduard Zingerman <eddyz87@...il.com>,
	Song Liu <song@...nel.org>,
	Yonghong Song <yonghong.song@...ux.dev>,
	John Fastabend <john.fastabend@...il.com>,
	KP Singh <kpsingh@...nel.org>,
	Stanislav Fomichev <sdf@...ichev.me>,
	Hao Luo <haoluo@...gle.com>,
	Jiri Olsa <jolsa@...nel.org>,
	Nathan Chancellor <nathan@...nel.org>,
	Nicolas Schier <nicolas.schier@...ux.dev>,
	Nick Desaulniers <nick.desaulniers+lkml@...il.com>,
	Bill Wendling <morbo@...gle.com>,
	Justin Stitt <justinstitt@...gle.com>
Cc: bpf@...r.kernel.org,
	dwarves@...r.kernel.org,
	linux-kernel@...r.kernel.org,
	linux-kbuild@...r.kernel.org,
	Alan Maguire <alan.maguire@...cle.com>,
	Donglin Peng <dolinux.peng@...il.com>
Subject: [PATCH bpf-next v1 0/4] resolve_btfids: Support for BTF modifications

This series changes resolve_btfids and kernel build scripts to enable
BTF transformations in resolve_btfids. Main motivation for enhancing
resolve_btfids is to reduce dependency of the kernel build on pahole
capabilities [1] and enable BTF features and optimizations [2][3]
particular to the kernel.

Patches #1-#3 in the series are non-functional refactoring in
resolve_btfids. The last patch (#4) makes significant changes in
resolve_btfids and introduces scripts/gen-btf.sh. Implementation
changes are described in detail in the patch description.

One RFC item in this patchset is the --distilled_base [4] handling.
Before this patchset .BTF.base was generated and added to target
binary by pahole, based on these conditions [5]:
  * pahole version >=1.28
  * the kernel module is out-of-tree (KBUILD_EXTMOD)

Since BTF finalization is now done by resolve_btfids, it requires
btf__distill_base() to happen there. However, in my opinion, it is
unnecessary to add and pass through a --distilled_base flag for
resolve_btfids.

Logically, any split BTF referring to kernel BTF is not very useful
without the .BTF.base, which is why the feature was developed in the
first place. Therefore it makes sense to always emit .BTF.base for all
modules, unconditionally. This is implemented in the series.

However it might be argued that .BTF.base is redundant for in-tree
modules: it takes space the module ELF and triggers unnecessary
btf__relocate() call on load [6]. It can be avoided by special-casing
in-tree module handling in resolve_btfids either with a flag or by
checking env variables. The trade-off is slight performance impact vs
code complexity.

[1] https://lore.kernel.org/dwarves/ba1650aa-fafd-49a8-bea4-bdddee7c38c9@linux.dev/
[2] https://lore.kernel.org/bpf/20251029190113.3323406-1-ihor.solodrai@linux.dev/
[3] https://lore.kernel.org/bpf/20251119031531.1817099-1-dolinux.peng@gmail.com/
[4] https://docs.kernel.org/bpf/btf.html#btf-base-section
[5] https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git/tree/scripts/Makefile.btf#n29
[6] https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git/tree/kernel/bpf/btf.c#n6358

Ihor Solodrai (4):
  resolve_btfids: rename object btf field to btf_path
  resolve_btfids: factor out load_btf()
  resolve_btfids: introduce enum btf_id_kind
  resolve_btfids: change in-place update with raw binary output

 MAINTAINERS                     |   1 +
 scripts/Makefile.modfinal       |   5 +-
 scripts/gen-btf.sh              | 166 ++++++++++++++++++++++
 scripts/link-vmlinux.sh         |  42 +-----
 tools/bpf/resolve_btfids/main.c | 234 +++++++++++++++++++++++---------
 5 files changed, 348 insertions(+), 100 deletions(-)
 create mode 100755 scripts/gen-btf.sh

-- 
2.52.0


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ