This source file includes following definitions.
- selinux_kernel_status_page
- selinux_status_update_setenforce
- selinux_status_update_policyload
1
2
3
4
5
6
7
8
9 #include <linux/kernel.h>
10 #include <linux/gfp.h>
11 #include <linux/mm.h>
12 #include <linux/mutex.h>
13 #include "avc.h"
14 #include "services.h"
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 struct page *selinux_kernel_status_page(struct selinux_state *state)
43 {
44 struct selinux_kernel_status *status;
45 struct page *result = NULL;
46
47 mutex_lock(&state->ss->status_lock);
48 if (!state->ss->status_page) {
49 state->ss->status_page = alloc_page(GFP_KERNEL|__GFP_ZERO);
50
51 if (state->ss->status_page) {
52 status = page_address(state->ss->status_page);
53
54 status->version = SELINUX_KERNEL_STATUS_VERSION;
55 status->sequence = 0;
56 status->enforcing = enforcing_enabled(state);
57
58
59
60
61
62
63 status->policyload = 0;
64 status->deny_unknown =
65 !security_get_allow_unknown(state);
66 }
67 }
68 result = state->ss->status_page;
69 mutex_unlock(&state->ss->status_lock);
70
71 return result;
72 }
73
74
75
76
77
78
79 void selinux_status_update_setenforce(struct selinux_state *state,
80 int enforcing)
81 {
82 struct selinux_kernel_status *status;
83
84 mutex_lock(&state->ss->status_lock);
85 if (state->ss->status_page) {
86 status = page_address(state->ss->status_page);
87
88 status->sequence++;
89 smp_wmb();
90
91 status->enforcing = enforcing;
92
93 smp_wmb();
94 status->sequence++;
95 }
96 mutex_unlock(&state->ss->status_lock);
97 }
98
99
100
101
102
103
104
105 void selinux_status_update_policyload(struct selinux_state *state,
106 int seqno)
107 {
108 struct selinux_kernel_status *status;
109
110 mutex_lock(&state->ss->status_lock);
111 if (state->ss->status_page) {
112 status = page_address(state->ss->status_page);
113
114 status->sequence++;
115 smp_wmb();
116
117 status->policyload = seqno;
118 status->deny_unknown = !security_get_allow_unknown(state);
119
120 smp_wmb();
121 status->sequence++;
122 }
123 mutex_unlock(&state->ss->status_lock);
124 }