mbox series

[bpf-next,v1,0/3] Fix resource leak checks for tail calls

Message ID 20241103225940.1408302-1-memxor@gmail.com (mailing list archive)
Headers show
Series Fix resource leak checks for tail calls | expand

Message

Kumar Kartikeya Dwivedi Nov. 3, 2024, 10:59 p.m. UTC
This set contains a fix for detecting unreleased RCU read locks or
unfinished preempt_disable sections when performing a tail call. Spin
locks are prevented by accident since they don't allow any function
calls, including tail calls (modelled as call instruction to a helper),
so we ensure they are checked as well, in preparation for relaxing
function call restricton for critical sections in the future.

Then, in the second patch, all the checks for reference leaks and locks
are unified into a single function that can be called from different
places. This unification patch is kept separate and placed after the fix
to allow independent backport of the fix to older kernels without a
depdendency on the clean up.

Naturally, this creates a divergence in the disparate error messages,
therefore selftests that rely on the exact error strings need to be
updated to match the new verifier log message.

A selftest is included to ensure no regressions occur wrt this behavior.

Kumar Kartikeya Dwivedi (3):
  bpf: Tighten tail call checks for lingering locks, RCU,
    preempt_disable
  bpf: Unify resource leak checks
  selftests/bpf: Add tests for tail calls with locks and refs

 kernel/bpf/verifier.c                         | 75 +++++++++----------
 .../selftests/bpf/prog_tests/tailcalls.c      |  8 ++
 .../selftests/bpf/progs/exceptions_fail.c     |  4 +-
 .../selftests/bpf/progs/preempt_lock.c        | 14 ++--
 .../selftests/bpf/progs/tailcall_fail.c       | 64 ++++++++++++++++
 .../bpf/progs/verifier_ref_tracking.c         |  4 +-
 .../selftests/bpf/progs/verifier_spin_lock.c  |  2 +-
 7 files changed, 118 insertions(+), 53 deletions(-)
 create mode 100644 tools/testing/selftests/bpf/progs/tailcall_fail.c


base-commit: 77017b9c46820d72596e50a3986bd0734c1340a9

Comments

patchwork-bot+netdevbpf@kernel.org Nov. 4, 2024, 1 a.m. UTC | #1
Hello:

This series was applied to bpf/bpf-next.git (master)
by Alexei Starovoitov <ast@kernel.org>:

On Sun,  3 Nov 2024 14:59:37 -0800 you wrote:
> This set contains a fix for detecting unreleased RCU read locks or
> unfinished preempt_disable sections when performing a tail call. Spin
> locks are prevented by accident since they don't allow any function
> calls, including tail calls (modelled as call instruction to a helper),
> so we ensure they are checked as well, in preparation for relaxing
> function call restricton for critical sections in the future.
> 
> [...]

Here is the summary with links:
  - [bpf-next,v1,1/3] bpf: Tighten tail call checks for lingering locks, RCU, preempt_disable
    https://git.kernel.org/bpf/bpf-next/c/46f7ed32f7a8
  - [bpf-next,v1,2/3] bpf: Unify resource leak checks
    https://git.kernel.org/bpf/bpf-next/c/d402755ced2e
  - [bpf-next,v1,3/3] selftests/bpf: Add tests for tail calls with locks and refs
    https://git.kernel.org/bpf/bpf-next/c/711df091dea9

You are awesome, thank you!