mbox series

[bpf,v2,0/2] bpf: Fix linker optimization removing kfuncs

Message ID cover.1717477560.git.Tony.Ambardar@gmail.com (mailing list archive)
Headers show
Series bpf: Fix linker optimization removing kfuncs | expand

Message

Tony Ambardar June 4, 2024, 5:23 a.m. UTC
This patch series fixes unwanted stripping of kernel kfuncs during linker
optimization, as indicated by build warnings from resolve_btfids e.g.
"WARN: resolve_btfids: unresolved symbol ...". This can happen because the
__bpf_kfunc macro annotating kfunc declarations is ignored during linking.

Patch 1 adds support for the compiler attribute "__retain__", used to
avoid linker garbage cleanup. Patch 2 then updates __bpf_kfunc to use this
attribute when LTO builds are enabled.

Build-tested locally against mips64el with gcc 13.3, and run through
upstream kernel-patches/bpf CI.

Tony Ambardar (2):
  compiler_types.h: Define __retain for __attribute__((__retain__))
  bpf: Harden __bpf_kfunc tag against linker kfunc removal

 include/linux/btf.h            |  2 +-
 include/linux/compiler_types.h | 23 +++++++++++++++++++++++
 2 files changed, 24 insertions(+), 1 deletion(-)

Comments

patchwork-bot+netdevbpf@kernel.org June 14, 2024, 5:20 p.m. UTC | #1
Hello:

This series was applied to bpf/bpf.git (master)
by Daniel Borkmann <daniel@iogearbox.net>:

On Mon,  3 Jun 2024 22:23:14 -0700 you wrote:
> This patch series fixes unwanted stripping of kernel kfuncs during linker
> optimization, as indicated by build warnings from resolve_btfids e.g.
> "WARN: resolve_btfids: unresolved symbol ...". This can happen because the
> __bpf_kfunc macro annotating kfunc declarations is ignored during linking.
> 
> Patch 1 adds support for the compiler attribute "__retain__", used to
> avoid linker garbage cleanup. Patch 2 then updates __bpf_kfunc to use this
> attribute when LTO builds are enabled.
> 
> [...]

Here is the summary with links:
  - [bpf,v2,1/2] compiler_types.h: Define __retain for __attribute__((__retain__))
    https://git.kernel.org/bpf/bpf/c/0a5d3258d7c9
  - [bpf,v2,2/2] bpf: Harden __bpf_kfunc tag against linker kfunc removal
    https://git.kernel.org/bpf/bpf/c/7bdcedd5c8fb

You are awesome, thank you!