From: Jon Doron <jond@xxxxxx> When running rootless with special capabilities like: FOWNER / DAC_OVERRIDE / DAC_READ_SEARCH The access API will not make the proper check if there is really access to a file or not. Signed-off-by: Jon Doron <jond@xxxxxx> --- tools/lib/bpf/libbpf.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index 50d41815f431..df804fd65493 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -875,8 +875,9 @@ __u32 get_kernel_version(void) const char *ubuntu_kver_file = "/proc/version_signature"; __u32 major, minor, patch; struct utsname info; + struct stat sb; - if (access(ubuntu_kver_file, R_OK) == 0) { + if (stat(ubuntu_kver_file, &sb) == 0) { FILE *f; f = fopen(ubuntu_kver_file, "r"); @@ -9877,9 +9878,10 @@ static int append_to_file(const char *file, const char *fmt, ...) static bool use_debugfs(void) { static int has_debugfs = -1; + struct stat sb; if (has_debugfs < 0) - has_debugfs = access(DEBUGFS, F_OK) == 0; + has_debugfs = stat(DEBUGFS, &sb) == 0; return has_debugfs == 1; } -- 2.37.3