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 {   */  #define SMK_NUM_ACCESS_TYPE 5 +/* SMACK data */ +struct smack_audit_data { +	const char *function; +	char *subject; +	char *object; +	char *request; +	int result; +}; +  /*   * Smack audit data; is empty if CONFIG_AUDIT not set   * to save some stack @@ -192,6 +201,7 @@ struct smack_known {  struct smk_audit_info {  #ifdef CONFIG_AUDIT  	struct common_audit_data a; +	struct smack_audit_data sad;  #endif  };  /* @@ -311,7 +321,16 @@ static inline void smk_ad_init(struct smk_audit_info *a, const char *func,  {  	memset(a, 0, sizeof(*a));  	a->a.type = type; -	a->a.smack_audit_data.function = func; +	a->a.smack_audit_data = &a->sad; +	a->a.smack_audit_data->function = func; +} + +static inline void smk_ad_init_net(struct smk_audit_info *a, const char *func, +				   char type, struct lsm_network_audit *net) +{ +	smk_ad_init(a, func, type); +	memset(net, 0, sizeof(*net)); +	a->a.u.net = net;  }  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,  static inline void smk_ad_setfield_u_net_sk(struct smk_audit_info *a,  					    struct sock *sk)  { -	a->a.u.net.sk = sk; +	a->a.u.net->sk = sk;  }  #else /* no AUDIT */  |