bpf, cgroup: implement eBPF-based device controller for cgroup v2
authorRoman Gushchin <guro@fb.com>
Sun, 5 Nov 2017 13:15:32 +0000 (08:15 -0500)
committerDavid S. Miller <davem@davemloft.net>
Sun, 5 Nov 2017 14:26:51 +0000 (23:26 +0900)
commitebc614f687369f9df99828572b1d85a7c2de3d92
treebfcaecb3636c2ef3fd31da33138fe72db50663f2
parentecf8fecb7828648cba0e42de7464a7e600c93459
bpf, cgroup: implement eBPF-based device controller for cgroup v2

Cgroup v2 lacks the device controller, provided by cgroup v1.
This patch adds a new eBPF program type, which in combination
of previously added ability to attach multiple eBPF programs
to a cgroup, will provide a similar functionality, but with some
additional flexibility.

This patch introduces a BPF_PROG_TYPE_CGROUP_DEVICE program type.
A program takes major and minor device numbers, device type
(block/character) and access type (mknod/read/write) as parameters
and returns an integer which defines if the operation should be
allowed or terminated with -EPERM.

Signed-off-by: Roman Gushchin <guro@fb.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Tejun Heo <tj@kernel.org>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/bpf-cgroup.h
include/linux/bpf_types.h
include/linux/device_cgroup.h
include/uapi/linux/bpf.h
kernel/bpf/cgroup.c
kernel/bpf/syscall.c
kernel/bpf/verifier.c
tools/include/uapi/linux/bpf.h