]> Git Repo - linux.git/blob - tools/testing/selftests/bpf/unpriv_helpers.c
Linux 6.14-rc3
[linux.git] / tools / testing / selftests / bpf / unpriv_helpers.c
1 // SPDX-License-Identifier: GPL-2.0-only
2
3 #include <stdbool.h>
4 #include <stdlib.h>
5 #include <stdio.h>
6 #include <string.h>
7 #include <unistd.h>
8 #include <fcntl.h>
9
10 #include "unpriv_helpers.h"
11
12 static bool get_mitigations_off(void)
13 {
14         char cmdline[4096], *c;
15         int fd, ret = false;
16
17         fd = open("/proc/cmdline", O_RDONLY);
18         if (fd < 0) {
19                 perror("open /proc/cmdline");
20                 return false;
21         }
22
23         if (read(fd, cmdline, sizeof(cmdline) - 1) < 0) {
24                 perror("read /proc/cmdline");
25                 goto out;
26         }
27
28         cmdline[sizeof(cmdline) - 1] = '\0';
29         for (c = strtok(cmdline, " \n"); c; c = strtok(NULL, " \n")) {
30                 if (strncmp(c, "mitigations=off", strlen(c)))
31                         continue;
32                 ret = true;
33                 break;
34         }
35 out:
36         close(fd);
37         return ret;
38 }
39
40 bool get_unpriv_disabled(void)
41 {
42         bool disabled;
43         char buf[2];
44         FILE *fd;
45
46         fd = fopen("/proc/sys/" UNPRIV_SYSCTL, "r");
47         if (fd) {
48                 disabled = (fgets(buf, 2, fd) == buf && atoi(buf));
49                 fclose(fd);
50         } else {
51                 perror("fopen /proc/sys/" UNPRIV_SYSCTL);
52                 disabled = true;
53         }
54
55         return disabled ? true : get_mitigations_off();
56 }
This page took 0.034698 seconds and 4 git commands to generate.