[PATCH v5 06/10] trace/bpf_trace: open access for CAP_PERFMON privileged process

Alexey Budankov <[email protected]> Mon, 20 Jan 2020 14:29:45 +0300
Newsgroups gmane.linux.kernel,gmane.linux.kernel.lsm,gmane.comp.freedesktop.xorg.drivers.intel,gmane.linux.ports.parisc,gmane.linux.ports.ppc64.devel,gmane.linux.ports.arm.kernel,gmane.linux.kernel.perf.user,gmane.linux.oprofile
Organization Intel Corp.
Message-ID <[email protected]>
Open access to bpf_trace monitoring for CAP_PERFMON privileged processes.
For backward compatibility reasons access to bpf_trace monitoring remains
open for CAP_SYS_ADMIN privileged processes but CAP_SYS_ADMIN usage for
secure bpf_trace monitoring is discouraged with respect to CAP_PERFMON
capability. Providing the access under CAP_PERFMON capability singly,
without the rest of CAP_SYS_ADMIN credentials, excludes chances to misuse
the credentials and makes operations more secure.

Signed-off-by: Alexey Budankov <[email protected]>
---
 kernel/trace/bpf_trace.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c
index e5ef4ae9edb5..334f1d71ebb1 100644
--- a/kernel/trace/bpf_trace.c
+++ b/kernel/trace/bpf_trace.c
@@ -1395,7 +1395,7 @@ int perf_event_query_prog_array(struct perf_event *event, void __user *info)
 	u32 *ids, prog_cnt, ids_len;
 	int ret;
 
-	if (!capable(CAP_SYS_ADMIN))
+	if (!perfmon_capable())
 		return -EPERM;
 	if (event->attr.type != PERF_TYPE_TRACEPOINT)
 		return -EINVAL;
-- 
2.20.1