aboutsummaryrefslogtreecommitdiffstats
path: root/security/smack/smack.h
diff options
context:
space:
mode:
Diffstat (limited to 'security/smack/smack.h')
-rw-r--r--security/smack/smack.h25
1 files changed, 9 insertions, 16 deletions
diff --git a/security/smack/smack.h b/security/smack/smack.h
index b8c1a869d85e..244e035e5a99 100644
--- a/security/smack/smack.h
+++ b/security/smack/smack.h
@@ -138,6 +138,11 @@ struct smk_port_label {
138 struct smack_known *smk_out; /* outgoing label */ 138 struct smack_known *smk_out; /* outgoing label */
139}; 139};
140 140
141struct smack_onlycap {
142 struct list_head list;
143 struct smack_known *smk_label;
144};
145
141/* 146/*
142 * Mount options 147 * Mount options
143 */ 148 */
@@ -249,6 +254,7 @@ int smk_netlbl_mls(int, char *, struct netlbl_lsm_secattr *, int);
249struct smack_known *smk_import_entry(const char *, int); 254struct smack_known *smk_import_entry(const char *, int);
250void smk_insert_entry(struct smack_known *skp); 255void smk_insert_entry(struct smack_known *skp);
251struct smack_known *smk_find_entry(const char *); 256struct smack_known *smk_find_entry(const char *);
257int smack_privileged(int cap);
252 258
253/* 259/*
254 * Shared data. 260 * Shared data.
@@ -257,7 +263,6 @@ extern int smack_enabled;
257extern int smack_cipso_direct; 263extern int smack_cipso_direct;
258extern int smack_cipso_mapped; 264extern int smack_cipso_mapped;
259extern struct smack_known *smack_net_ambient; 265extern struct smack_known *smack_net_ambient;
260extern struct smack_known *smack_onlycap;
261extern struct smack_known *smack_syslog_label; 266extern struct smack_known *smack_syslog_label;
262#ifdef CONFIG_SECURITY_SMACK_BRINGUP 267#ifdef CONFIG_SECURITY_SMACK_BRINGUP
263extern struct smack_known *smack_unconfined; 268extern struct smack_known *smack_unconfined;
@@ -276,6 +281,9 @@ extern struct mutex smack_known_lock;
276extern struct list_head smack_known_list; 281extern struct list_head smack_known_list;
277extern struct list_head smk_netlbladdr_list; 282extern struct list_head smk_netlbladdr_list;
278 283
284extern struct mutex smack_onlycap_lock;
285extern struct list_head smack_onlycap_list;
286
279#define SMACK_HASH_SLOTS 16 287#define SMACK_HASH_SLOTS 16
280extern struct hlist_head smack_known_hash[SMACK_HASH_SLOTS]; 288extern struct hlist_head smack_known_hash[SMACK_HASH_SLOTS];
281 289
@@ -332,21 +340,6 @@ static inline struct smack_known *smk_of_current(void)
332} 340}
333 341
334/* 342/*
335 * Is the task privileged and allowed to be privileged
336 * by the onlycap rule.
337 */
338static inline int smack_privileged(int cap)
339{
340 struct smack_known *skp = smk_of_current();
341
342 if (!capable(cap))
343 return 0;
344 if (smack_onlycap == NULL || smack_onlycap == skp)
345 return 1;
346 return 0;
347}
348
349/*
350 * logging functions 343 * logging functions
351 */ 344 */
352#define SMACK_AUDIT_DENIED 0x1 345#define SMACK_AUDIT_DENIED 0x1