This patchset introduces a new operation and a new flag to split the SECCOMP_SET_MODE_FILTER process into two steps: load filter and attach filter. Thus we can reuse the filter. The new SECCOMP_LOAD_FILTER loads the filter and returns a fd which can be pinned to bpffs. This extends the lifetime of the filter and thus can be reused by different processes. With this new operation, we can eliminate a hot path of JITing BPF program (the filter) where we apply the same seccomp filter to thousands of micro VMs on a bare metal instance. The new flag SECCOMP_FILTER_FLAG_BPF_PROG_FD is used to attach a filter which is loaded via SECCOMP_LOAD_FILTER and represented by a seccomp bpf prog fd. The fd is either returned from SECCOMP_LOAD_FILTER or obtained from bpffs using bpf syscall. Change logs: v1 -> v2: - Add a flag to attach filter from fd - Update selftests RFC -> v1: - Addressed comments from Kees - Reuse filter copy/create code (patch 1) - Add a selftest (patch 4) Hengqi Chen (5): seccomp: Refactor filter copy/create for reuse seccomp, bpf: Introduce SECCOMP_LOAD_FILTER operation seccomp: Introduce new flag SECCOMP_FILTER_FLAG_BPF_PROG_FD selftests/seccomp: Test seccomp filter load and attach selftests/bpf: Skip BPF_PROG_TYPE_SECCOMP-related tests include/linux/seccomp.h | 3 +- include/uapi/linux/bpf.h | 1 + include/uapi/linux/seccomp.h | 3 + kernel/seccomp.c | 170 +++++++++++++++--- tools/include/uapi/linux/bpf.h | 1 + .../selftests/bpf/prog_tests/libbpf_probes.c | 3 +- .../selftests/bpf/prog_tests/libbpf_str.c | 3 + tools/testing/selftests/seccomp/seccomp_bpf.c | 44 +++++ 8 files changed, 197 insertions(+), 31 deletions(-) -- 2.34.1