mbox series

[RESEND,bpf-next,v3,0/5] bpf: make trusted args nullable

Message ID 20240613211817.1551967-1-vadfed@meta.com (mailing list archive)
Headers show
Series bpf: make trusted args nullable | expand

Message

Vadim Fedorenko June 13, 2024, 9:18 p.m. UTC
Current verifier checks for the arg to be nullable after checking for
certain pointer types. It prevents programs to pass NULL to kfunc args
even if they are marked as nullable. This patchset adjusts verifier and
changes bpf crypto kfuncs to allow null for IV parameter which is
optional for some ciphers. Benchmark shows ~4% improvements when there
is no need to initialise 0-sized dynptr.

v3:
- add special selftest for nullable parameters
v2:
- adjust kdoc accordingly

Vadim Fedorenko (5):
  bpf: verifier: make kfuncs args nullalble
  bpf: crypto: make state and IV dynptr nullable
  selftests: bpf: crypto: use NULL instead of 0-sized dynptr
  selftests: bpf: crypto: adjust bench to use nullable IV
  selftests: bpf: add testmod kfunc for nullable params

 kernel/bpf/crypto.c                           | 26 +++++------
 kernel/bpf/verifier.c                         |  6 +--
 .../selftests/bpf/bpf_testmod/bpf_testmod.c   |  6 +++
 .../bpf/bpf_testmod/bpf_testmod_kfunc.h       |  1 +
 .../bpf/prog_tests/kfunc_param_nullable.c     | 11 +++++
 .../selftests/bpf/progs/crypto_bench.c        | 10 ++---
 .../selftests/bpf/progs/crypto_sanity.c       | 16 ++-----
 .../bpf/progs/test_kfunc_param_nullable.c     | 43 +++++++++++++++++++
 8 files changed, 85 insertions(+), 34 deletions(-)
 create mode 100644 tools/testing/selftests/bpf/prog_tests/kfunc_param_nullable.c
 create mode 100644 tools/testing/selftests/bpf/progs/test_kfunc_param_nullable.c

Comments

patchwork-bot+netdevbpf@kernel.org June 13, 2024, 11:40 p.m. UTC | #1
Hello:

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

On Thu, 13 Jun 2024 14:18:12 -0700 you wrote:
> Current verifier checks for the arg to be nullable after checking for
> certain pointer types. It prevents programs to pass NULL to kfunc args
> even if they are marked as nullable. This patchset adjusts verifier and
> changes bpf crypto kfuncs to allow null for IV parameter which is
> optional for some ciphers. Benchmark shows ~4% improvements when there
> is no need to initialise 0-sized dynptr.
> 
> [...]

Here is the summary with links:
  - [RESEND,bpf-next,v3,1/5] bpf: verifier: make kfuncs args nullalble
    https://git.kernel.org/bpf/bpf-next/c/a90797993afc
  - [RESEND,bpf-next,v3,2/5] bpf: crypto: make state and IV dynptr nullable
    https://git.kernel.org/bpf/bpf-next/c/65d6d61d2596
  - [RESEND,bpf-next,v3,3/5] selftests: bpf: crypto: use NULL instead of 0-sized dynptr
    https://git.kernel.org/bpf/bpf-next/c/9363dc8ddc4e
  - [RESEND,bpf-next,v3,4/5] selftests: bpf: crypto: adjust bench to use nullable IV
    https://git.kernel.org/bpf/bpf-next/c/9b560751f75f
  - [RESEND,bpf-next,v3,5/5] selftests: bpf: add testmod kfunc for nullable params
    https://git.kernel.org/bpf/bpf-next/c/2d45ab1eda46

You are awesome, thank you!