diff options
Diffstat (limited to 'security/integrity/ima/ima_api.c')
| -rw-r--r-- | security/integrity/ima/ima_api.c | 20 | 
1 files changed, 10 insertions, 10 deletions
diff --git a/security/integrity/ima/ima_api.c b/security/integrity/ima/ima_api.c index b8a27c5052d4..1d950fbb2aec 100644 --- a/security/integrity/ima/ima_api.c +++ b/security/integrity/ima/ima_api.c @@ -37,10 +37,8 @@ void ima_free_template_entry(struct ima_template_entry *entry)  /*   * ima_alloc_init_template - create and initialize a new template entry   */ -int ima_alloc_init_template(struct integrity_iint_cache *iint, -			    struct file *file, const unsigned char *filename, -			    struct evm_ima_xattr_data *xattr_value, -			    int xattr_len, struct ima_template_entry **entry) +int ima_alloc_init_template(struct ima_event_data *event_data, +			    struct ima_template_entry **entry)  {  	struct ima_template_desc *template_desc = ima_template_desc_current();  	int i, result = 0; @@ -55,8 +53,7 @@ int ima_alloc_init_template(struct integrity_iint_cache *iint,  		struct ima_template_field *field = template_desc->fields[i];  		u32 len; -		result = field->field_init(iint, file, filename, -					   xattr_value, xattr_len, +		result = field->field_init(event_data,  					   &((*entry)->template_data[i]));  		if (result != 0)  			goto out; @@ -129,18 +126,20 @@ int ima_store_template(struct ima_template_entry *entry,   * value is invalidated.   */  void ima_add_violation(struct file *file, const unsigned char *filename, +		       struct integrity_iint_cache *iint,  		       const char *op, const char *cause)  {  	struct ima_template_entry *entry;  	struct inode *inode = file_inode(file); +	struct ima_event_data event_data = {iint, file, filename, NULL, 0, +					    cause};  	int violation = 1;  	int result;  	/* can overflow, only indicator */  	atomic_long_inc(&ima_htable.violations); -	result = ima_alloc_init_template(NULL, file, filename, -					 NULL, 0, &entry); +	result = ima_alloc_init_template(&event_data, &entry);  	if (result < 0) {  		result = -ENOMEM;  		goto err_out; @@ -267,13 +266,14 @@ void ima_store_measurement(struct integrity_iint_cache *iint,  	int result = -ENOMEM;  	struct inode *inode = file_inode(file);  	struct ima_template_entry *entry; +	struct ima_event_data event_data = {iint, file, filename, xattr_value, +					    xattr_len, NULL};  	int violation = 0;  	if (iint->flags & IMA_MEASURED)  		return; -	result = ima_alloc_init_template(iint, file, filename, -					 xattr_value, xattr_len, &entry); +	result = ima_alloc_init_template(&event_data, &entry);  	if (result < 0) {  		integrity_audit_msg(AUDIT_INTEGRITY_PCR, inode, filename,  				    op, audit_cause, result, 0);  |