Linux Audio

Check our new training course

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