This patch set adds support for replacing cgroup-bpf programs attached with BPF_F_ALLOW_MULTI flag so that any program a list can be updated to a new version without service interruption and order of programs can be preserved. Please see patch 3 for details on the use-case and API changes. Other patches: Patch 1 is preliminary refactoring of __cgroup_bpf_attach to simplify it. Patch 2 is minor cleanup of hierarchy_allows_attach. Patch 4 extends libbpf API to support new set of attach attributes. Patch 5 adds selftest coverage for the new API. Andrey Ignatov (5): bpf: Simplify __cgroup_bpf_attach bpf: Remove unused new_flags in hierarchy_allows_attach() bpf: Support replacing cgroup-bpf program in MULTI mode libbpf: Introduce bpf_prog_attach_xattr selftests/bpf: Cover BPF_F_REPLACE in test_cgroup_attach include/linux/bpf-cgroup.h | 4 +- include/uapi/linux/bpf.h | 10 ++ kernel/bpf/cgroup.c | 97 ++++++++++--------- kernel/bpf/syscall.c | 4 +- kernel/cgroup/cgroup.c | 5 +- tools/include/uapi/linux/bpf.h | 10 ++ tools/lib/bpf/bpf.c | 22 ++++- tools/lib/bpf/bpf.h | 10 ++ tools/lib/bpf/libbpf.map | 5 + .../selftests/bpf/test_cgroup_attach.c | 61 +++++++++++- 10 files changed, 168 insertions(+), 60 deletions(-) -- 2.17.1