bpf: Add support for forced LINK_DETACH command
authorAndrii Nakryiko <andriin@fb.com>
Fri, 31 Jul 2020 18:28:26 +0000 (11:28 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Sun, 2 Aug 2020 03:38:28 +0000 (20:38 -0700)
commit73b11c2ab072d5b0599d1e12cc126f55ee306daf
tree0b005d7d70f073d7d908e0d2a1fb263405f3971b
parent4939b2847d26c025e2e2118744226967f239a1ac
bpf: Add support for forced LINK_DETACH command

Add LINK_DETACH command to force-detach bpf_link without destroying it. It has
the same behavior as auto-detaching of bpf_link due to cgroup dying for
bpf_cgroup_link or net_device being destroyed for bpf_xdp_link. In such case,
bpf_link is still a valid kernel object, but is defuncts and doesn't hold BPF
program attached to corresponding BPF hook. This functionality allows users
with enough access rights to manually force-detach attached bpf_link without
killing respective owner process.

This patch implements LINK_DETACH for cgroup, xdp, and netns links, mostly
re-using existing link release handling code.

Signed-off-by: Andrii Nakryiko <andriin@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Song Liu <songliubraving@fb.com>
Acked-by: John Fastabend <john.fastabend@gmail.com>
Link: https://lore.kernel.org/bpf/20200731182830.286260-2-andriin@fb.com
include/linux/bpf.h
include/uapi/linux/bpf.h
kernel/bpf/cgroup.c
kernel/bpf/net_namespace.c
kernel/bpf/syscall.c
net/core/dev.c