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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
-- 
2.43.5





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux