linux/tools/testing/selftests
Lorenz Bauer 248e00ac47 bpf: cgroup: Allow multi-attach program to replace itself
When using BPF_PROG_ATTACH to attach a program to a cgroup in
BPF_F_ALLOW_MULTI mode, it is not possible to replace a program
with itself. This is because the check for duplicate programs
doesn't take the replacement program into account.

Replacing a program with itself might seem weird, but it has
some uses: first, it allows resetting the associated cgroup storage.
Second, it makes the API consistent with the non-ALLOW_MULTI usage,
where it is possible to replace a program with itself. Third, it
aligns BPF_PROG_ATTACH with bpf_link, where replacing itself is
also supported.

Sice this code has been refactored a few times this change will
only apply to v5.7 and later. Adjustments could be made to
commit 1020c1f24a ("bpf: Simplify __cgroup_bpf_attach") and
commit d7bf2c10af ("bpf: allocate cgroup storage entries on attaching bpf programs")
as well as commit 324bda9e6c ("bpf: multi program support for cgroup+bpf")

Fixes: af6eea5743 ("bpf: Implement bpf_link-based cgroup BPF program attachment")
Signed-off-by: Lorenz Bauer <lmb@cloudflare.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20200608162202.94002-1-lmb@cloudflare.com
2020-06-09 11:21:43 -07:00
..
android SPDX patches for 5.7-rc1. 2020-04-03 13:12:26 -07:00
arm64 .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
bpf bpf: cgroup: Allow multi-attach program to replace itself 2020-06-09 11:21:43 -07:00
breakpoints .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
capabilities .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
cgroup SPDX patches for 5.7-rc1. 2020-04-03 13:12:26 -07:00
clone3 SPDX patches for 5.7-rc1. 2020-04-03 13:12:26 -07:00
cpu-hotplug
cpufreq
dmabuf-heaps kselftests: dmabuf-heaps: Fix confused return value on expected error testing 2020-05-08 09:40:58 -06:00
drivers selftests: mlxsw: Add test for control packets 2020-06-01 11:49:23 -07:00
efivarfs .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
exec .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
filesystems kselftests: introduce new epoll60 testcase for catching lost wakeups 2020-05-07 19:27:21 -07:00
firmware selftests: firmware: Add firmware_request_platform tests 2020-03-20 14:54:04 +01:00
ftrace linux-kselftest-5.7-rc6 2020-05-15 12:57:50 -07:00
futex .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
gpio selftests: add build/cross-build dependency check script 2020-04-23 17:23:20 -06:00
ia64 .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
intel_pstate selftests: add build/cross-build dependency check script 2020-04-23 17:23:20 -06:00
ipc selftests/ipc: Fix test failure seen after initial test run 2020-04-14 10:24:28 -06:00
ir .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
kcmp .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
kexec sefltest/ima: support appended signatures (modsig) 2019-08-29 12:45:30 -04:00
kmod selftests: kmod: test disabling module autoloading 2020-04-10 15:36:22 -07:00
kselftest kselftest/runner: allow to properly deliver signals to tests 2020-04-14 09:49:13 -06:00
kvm KVM: selftests: fix rdtsc() for vmx_tsc_adjust_test 2020-06-01 11:58:23 -04:00
lib selftests: Move kselftest_module.sh into kselftest/ 2019-11-07 14:46:08 -07:00
livepatch selftests: Install settings files to fix TIMEOUT failures 2020-02-20 08:56:42 -07:00
lkdtm selftests/lkdtm: Use grep -E instead of egrep 2020-05-08 09:46:17 -06:00
locking
media_tests .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
membarrier .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
memfd selftests: add build/cross-build dependency check script 2020-04-23 17:23:20 -06:00
memory-hotplug
mount .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
mqueue .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
net selftests: net: ip_defrag: ignore EPERM 2020-06-02 15:54:20 -07:00
netfilter selftests: netfilter: add nfqueue test case 2020-03-24 20:00:12 +01:00
nsfs tools/testing: Replace zero-length array with flexible-array 2020-05-08 09:42:14 -06:00
ntb New feature to add support for NTB virtual MSI interrupts, the ability 2019-07-21 09:46:59 -07:00
openat2 .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
pid_namespace selftests: add pid namespace ENOMEM regression test 2020-03-25 13:50:34 +01:00
pidfd selftests/pidfd: add pidfd setns tests 2020-05-13 11:41:22 +02:00
powerpc powerpc updates for 5.7 #2 2020-04-09 11:01:42 -07:00
prctl .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
proc .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
pstore pstore/platform: Use backend name for console registration 2020-05-30 10:34:02 -07:00
ptp ptp: Add adjust_phase to ptp_clock_caps capability. 2020-05-02 16:31:45 -07:00
ptrace SPDX patches for 5.7-rc1. 2020-04-03 13:12:26 -07:00
rcutorture Merge branches 'fixes.2020.04.27a', 'kfree_rcu.2020.04.27a', 'rcu-tasks.2020.04.27a', 'stall.2020.04.27a' and 'torture.2020.05.07a' into HEAD 2020-05-07 10:18:32 -07:00
resctrl selftests/resctrl: fix spelling mistake "Errror" -> "Error" 2020-03-13 13:29:22 -06:00
rseq .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
rtc .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
safesetid .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
seccomp selftests/seccomp: allow clock_nanosleep instead of nanosleep 2020-04-14 09:49:51 -06:00
sigaltstack .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
size .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
sparc64 .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
splice .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
static_keys
sync .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
sysctl
tc-testing Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-05-31 17:48:46 -07:00
timens SPDX patches for 5.7-rc1. 2020-04-03 13:12:26 -07:00
timers .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
tmpfs .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
tpm2 Revert "Kernel selftests: tpm2: check for tpm support" 2020-04-14 10:08:24 -06:00
uevent
user
vDSO .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
vm hmm related patches for 5.8 2020-06-02 14:05:27 -07:00
watchdog .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
wireguard arm64 updates for 5.8 2020-06-01 15:18:27 -07:00
x86 SPDX patches for 5.7-rc1. 2020-04-03 13:12:26 -07:00
zram docs: blockdev: add it to the admin-guide 2019-07-15 11:03:01 -03:00
.gitignore SPDX patches for 5.7-rc1. 2020-04-03 13:12:26 -07:00
gen_kselftest_tar.sh selftests: gen_kselftest_tar.sh: Do not clobber kselftest/ 2019-11-07 14:43:27 -07:00
kselftest_deps.sh selftests: add build/cross-build dependency check script 2020-04-23 17:23:20 -06:00
kselftest_harness.h kselftest: add fixture variants 2020-04-28 13:30:44 -07:00
kselftest_install.sh selftests: gen_kselftest_tar.sh: Do not clobber kselftest/ 2019-11-07 14:43:27 -07:00
kselftest_module.h
kselftest.h kselftest: save-and-restore errno to allow for %m formatting 2019-07-30 15:46:48 -06:00
lib.mk linux-kselftest-5.7-rc1 2020-04-01 16:09:12 -07:00
Makefile threads-v5.7 2020-04-04 10:08:18 -07:00