diff options
Diffstat (limited to 'security/smack/smack.h')
-rw-r--r-- | security/smack/smack.h | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/security/smack/smack.h b/security/smack/smack.h index 2ad00657b80..4ede719922e 100644 --- a/security/smack/smack.h +++ b/security/smack/smack.h | |||
@@ -185,6 +185,15 @@ struct smack_known { | |||
185 | */ | 185 | */ |
186 | #define SMK_NUM_ACCESS_TYPE 5 | 186 | #define SMK_NUM_ACCESS_TYPE 5 |
187 | 187 | ||
188 | /* SMACK data */ | ||
189 | struct smack_audit_data { | ||
190 | const char *function; | ||
191 | char *subject; | ||
192 | char *object; | ||
193 | char *request; | ||
194 | int result; | ||
195 | }; | ||
196 | |||
188 | /* | 197 | /* |
189 | * Smack audit data; is empty if CONFIG_AUDIT not set | 198 | * Smack audit data; is empty if CONFIG_AUDIT not set |
190 | * to save some stack | 199 | * to save some stack |
@@ -192,6 +201,7 @@ struct smack_known { | |||
192 | struct smk_audit_info { | 201 | struct smk_audit_info { |
193 | #ifdef CONFIG_AUDIT | 202 | #ifdef CONFIG_AUDIT |
194 | struct common_audit_data a; | 203 | struct common_audit_data a; |
204 | struct smack_audit_data sad; | ||
195 | #endif | 205 | #endif |
196 | }; | 206 | }; |
197 | /* | 207 | /* |
@@ -311,7 +321,16 @@ static inline void smk_ad_init(struct smk_audit_info *a, const char *func, | |||
311 | { | 321 | { |
312 | memset(a, 0, sizeof(*a)); | 322 | memset(a, 0, sizeof(*a)); |
313 | a->a.type = type; | 323 | a->a.type = type; |
314 | a->a.smack_audit_data.function = func; | 324 | a->a.smack_audit_data = &a->sad; |
325 | a->a.smack_audit_data->function = func; | ||
326 | } | ||
327 | |||
328 | static inline void smk_ad_init_net(struct smk_audit_info *a, const char *func, | ||
329 | char type, struct lsm_network_audit *net) | ||
330 | { | ||
331 | smk_ad_init(a, func, type); | ||
332 | memset(net, 0, sizeof(*net)); | ||
333 | a->a.u.net = net; | ||
315 | } | 334 | } |
316 | 335 | ||
317 | static inline void smk_ad_setfield_u_tsk(struct smk_audit_info *a, | 336 | static inline void smk_ad_setfield_u_tsk(struct smk_audit_info *a, |
@@ -337,7 +356,7 @@ static inline void smk_ad_setfield_u_fs_path(struct smk_audit_info *a, | |||
337 | static inline void smk_ad_setfield_u_net_sk(struct smk_audit_info *a, | 356 | static inline void smk_ad_setfield_u_net_sk(struct smk_audit_info *a, |
338 | struct sock *sk) | 357 | struct sock *sk) |
339 | { | 358 | { |
340 | a->a.u.net.sk = sk; | 359 | a->a.u.net->sk = sk; |
341 | } | 360 | } |
342 | 361 | ||
343 | #else /* no AUDIT */ | 362 | #else /* no AUDIT */ |