xref: /kernel/linux/linux-5.10/tools/perf/util/cap.c
  • Home
  • History
  • Annotate Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
  • only in /kernel/linux/linux-5.10/tools/perf/util/
18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Capability utilities
48c2ecf20Sopenharmony_ci */
58c2ecf20Sopenharmony_ci
68c2ecf20Sopenharmony_ci#ifdef HAVE_LIBCAP_SUPPORT
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci#include "cap.h"
98c2ecf20Sopenharmony_ci#include <stdbool.h>
108c2ecf20Sopenharmony_ci#include <sys/capability.h>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_cibool perf_cap__capable(cap_value_t cap)
138c2ecf20Sopenharmony_ci{
148c2ecf20Sopenharmony_ci	cap_flag_value_t val;
158c2ecf20Sopenharmony_ci	cap_t caps = cap_get_proc();
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ci	if (!caps)
188c2ecf20Sopenharmony_ci		return false;
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ci	if (cap_get_flag(caps, cap, CAP_EFFECTIVE, &val) != 0)
218c2ecf20Sopenharmony_ci		val = CAP_CLEAR;
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ci	if (cap_free(caps) != 0)
248c2ecf20Sopenharmony_ci		return false;
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci	return val == CAP_SET;
278c2ecf20Sopenharmony_ci}
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci#endif  /* HAVE_LIBCAP_SUPPORT */
30

Indexes created Thu Nov 07 10:32:03 CST 2024