linux/tools/testing/selftests
David Vernet 6c831c4684 bpf: Treat KF_RELEASE kfuncs as KF_TRUSTED_ARGS
KF_RELEASE kfuncs are not currently treated as having KF_TRUSTED_ARGS,
even though they have a superset of the requirements of KF_TRUSTED_ARGS.
Like KF_TRUSTED_ARGS, KF_RELEASE kfuncs require a 0-offset argument, and
don't allow NULL-able arguments. Unlike KF_TRUSTED_ARGS which require
_either_ an argument with ref_obj_id > 0, _or_ (ref->type &
BPF_REG_TRUSTED_MODIFIERS) (and no unsafe modifiers allowed), KF_RELEASE
only allows for ref_obj_id > 0.  Because KF_RELEASE today doesn't
automatically imply KF_TRUSTED_ARGS, some of these requirements are
enforced in different ways that can make the behavior of the verifier
feel unpredictable. For example, a KF_RELEASE kfunc with a NULL-able
argument will currently fail in the verifier with a message like, "arg#0
is ptr_or_null_ expected ptr_ or socket" rather than "Possibly NULL
pointer passed to trusted arg0". Our intention is the same, but the
semantics are different due to implemenetation details that kfunc authors
and BPF program writers should not need to care about.

Let's make the behavior of the verifier more consistent and intuitive by
having KF_RELEASE kfuncs imply the presence of KF_TRUSTED_ARGS. Our
eventual goal is to have all kfuncs assume KF_TRUSTED_ARGS by default
anyways, so this takes us a step in that direction.

Note that it does not make sense to assume KF_TRUSTED_ARGS for all
KF_ACQUIRE kfuncs. KF_ACQUIRE kfuncs can have looser semantics than
KF_RELEASE, with e.g. KF_RCU | KF_RET_NULL. We may want to have
KF_ACQUIRE imply KF_TRUSTED_ARGS _unless_ KF_RCU is specified, but that
can be left to another patch set, and there are no such subtleties to
address for KF_RELEASE.

Signed-off-by: David Vernet <void@manifault.com>
Link: https://lore.kernel.org/r/20230325213144.486885-4-void@manifault.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2023-03-25 16:56:22 -07:00
..
alsa kselftest/alsa: Run PCM tests for multiple cards in parallel 2023-02-04 09:36:35 +01:00
amd-pstate selftests: amd-pstate: Don't delete source files via Makefile 2023-01-25 10:01:35 -07:00
arm64 linux-kselftest-next-6.3-rc1 2023-02-23 09:37:29 -08:00
bpf bpf: Treat KF_RELEASE kfuncs as KF_TRUSTED_ARGS 2023-03-25 16:56:22 -07:00
breakpoints
capabilities
cgroup cgroup/cpuset: Fix wrong check in update_parent_subparts_cpumask() 2023-01-31 12:14:02 -10:00
clone3 selftests: clone3: Fix incorrect kernel headers search path 2023-01-30 15:01:52 -07:00
core selftests: core: Fix incorrect kernel headers search path 2023-01-30 15:04:52 -07:00
cpu-hotplug
cpufreq
damon selftests/damon/debugfs_rm_non_contexts: hide expected write error messages 2023-02-02 22:32:52 -08:00
dma
dmabuf-heaps selftests: dmabuf-heaps: Fix incorrect kernel headers search path 2023-02-13 09:09:44 -07:00
drivers linux-kselftest-next-6.3-rc1 2023-02-23 09:37:29 -08:00
efivarfs
exec
filesystems linux-kselftest-next-6.3-rc1 2023-02-23 09:37:29 -08:00
firmware
fpu
ftrace probes updates for 6.3: 2023-02-23 13:03:08 -08:00
futex selftests: futex: Fix incorrect kernel headers search path 2023-02-13 09:09:44 -07:00
gpio selftests: gpio: Fix incorrect kernel headers search path 2023-02-13 09:09:44 -07:00
hid selftests: hid: enforce new attach API 2023-01-18 22:08:38 +01:00
ia64
intel_pstate
iommu iommufd for 6.3 2023-02-24 14:34:12 -08:00
ipc selftests: ipc: Fix incorrect kernel headers search path 2023-02-13 09:09:44 -07:00
ir
kcmp selftests: kcmp: Fix incorrect kernel headers search path 2023-02-13 09:09:45 -07:00
kexec
kmod
kselftest
kvm ARM: 2023-02-25 11:30:21 -08:00
landlock selftests/landlock: Test ptrace as much as possible with Yama 2023-01-27 18:53:55 +01:00
lib
livepatch
lkdtm
locking
media_tests selftests: media_tests: Fix incorrect kernel headers search path 2023-02-13 09:09:45 -07:00
membarrier linux-kselftest-next-6.3-rc1 2023-02-23 09:37:29 -08:00
memfd - Daniel Verkamp has contributed a memfd series ("mm/memfd: add 2023-02-23 17:09:35 -08:00
memory-hotplug
mincore
mm - Daniel Verkamp has contributed a memfd series ("mm/memfd: add 2023-02-23 17:09:35 -08:00
mount
mount_setattr selftests/mount_setattr: fix to make run_tests failure 2023-02-13 16:37:29 -07:00
move_mount_set_group selftests: move_mount_set_group: Fix incorrect kernel headers search path 2023-02-13 09:09:45 -07:00
mqueue
nci
net selftests: fib_tests: Add test cases for IPv4/IPv6 in route notify 2023-02-23 10:54:13 +01:00
netfilter netfilter: ip6t_rpfilter: Fix regression with VRF interfaces 2023-02-22 00:22:20 +01:00
nolibc selftests/nolibc: Add a "run-user" target to test the program in user land 2023-01-24 15:35:45 -08:00
nsfs
ntb
openat2
perf_events selftests: perf_events: Fix incorrect kernel headers search path 2023-02-13 09:09:45 -07:00
pid_namespace selftests: pid_namespace: Fix incorrect kernel headers search path 2023-02-13 09:09:45 -07:00
pidfd selftests: pidfd: Fix incorrect kernel headers search path 2023-02-13 09:09:45 -07:00
powerpc selftests/powerpc: Fix incorrect kernel headers search path 2023-02-15 22:41:00 +11:00
prctl selftests: Fix spelling mistake "allright" -> "all right" 2023-02-13 09:09:46 -07:00
proc proc: fix PIE proc-empty-vm, proc-pid-vm tests 2023-01-11 16:14:22 -08:00
pstore
ptp selftests/ptp: Remove clean target from Makefile 2023-02-13 10:05:49 -07:00
ptrace selftests: ptrace: Use installed kernel headers search path 2023-02-13 09:09:46 -07:00
rcutorture nolibc updates for v6.3 2023-02-23 09:33:01 -08:00
resctrl
rlimits
rseq linux-kselftest-next-6.3-rc1 2023-02-23 09:37:29 -08:00
rtc
safesetid
sched selftests/sched: fix warn_unused_result build warns 2023-02-13 16:35:54 -07:00
seccomp linux-kselftest-next-6.3-rc1 2023-02-23 09:37:29 -08:00
sgx
sigaltstack
size
sparc64
splice
static_keys
sync selftests: sync: Fix incorrect kernel headers search path 2023-02-13 09:09:45 -07:00
syscall_user_dispatch
sysctl
tc-testing net/sched: Retire rsvp classifier 2023-02-16 09:27:07 +01:00
tdx selftests: tdx: Use installed kernel headers search path 2023-02-13 09:09:46 -07:00
timens
timers
tmpfs
tpm2 selftests: tpm2: remove redundant ord() 2023-02-13 09:09:46 -07:00
uevent
user
user_events selftests/user_events: add a note about user_events.h dependency 2023-02-14 13:18:55 -07:00
vDSO
watchdog
wireguard
x86 linux-kselftest-next-6.3-rc1 2023-02-23 09:37:29 -08:00
zram
.gitignore
gen_kselftest_tar.sh
kselftest.h
kselftest_deps.sh selftests/vm: rename selftests/vm to selftests/mm 2023-01-18 17:12:56 -08:00
kselftest_harness.h testing: kselftest_harness: add filtering and enumerating tests 2023-01-26 16:00:41 -07:00
kselftest_install.sh
kselftest_module.h
lib.mk kselftest: Fix error message for unconfigured LLVM builds 2023-01-12 13:38:04 -07:00
Makefile - Daniel Verkamp has contributed a memfd series ("mm/memfd: add 2023-02-23 17:09:35 -08:00
run_kselftest.sh