Skip to content

Commit

Permalink
ima: Have the LSM free its audit rule
Browse files Browse the repository at this point in the history
Ask the LSM to free its audit rule rather than directly calling kfree().
Both AppArmor and SELinux do additional work in their audit_rule_free()
hooks. Fix memory leaks by allowing the LSMs to perform necessary work.

Fixes: b169424 ("ima: use the lsm policy update notifier")
Signed-off-by: Tyler Hicks <[email protected]>
Cc: Janne Karhunen <[email protected]>
Cc: Casey Schaufler <[email protected]>
Reviewed-by: Mimi Zohar <[email protected]>
Signed-off-by: Mimi Zohar <[email protected]>
  • Loading branch information
tyhicks authored and mimizohar committed Jul 17, 2020
1 parent 34e980b commit 9ff8a61
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 1 deletion.
5 changes: 5 additions & 0 deletions security/integrity/ima/ima.h
Original file line number Diff line number Diff line change
Expand Up @@ -420,6 +420,7 @@ static inline void ima_free_modsig(struct modsig *modsig)
#ifdef CONFIG_IMA_LSM_RULES

#define security_filter_rule_init security_audit_rule_init
#define security_filter_rule_free security_audit_rule_free
#define security_filter_rule_match security_audit_rule_match

#else
Expand All @@ -430,6 +431,10 @@ static inline int security_filter_rule_init(u32 field, u32 op, char *rulestr,
return -EINVAL;
}

static inline void security_filter_rule_free(void *lsmrule)
{
}

static inline int security_filter_rule_match(u32 secid, u32 field, u32 op,
void *lsmrule)
{
Expand Down
2 changes: 1 addition & 1 deletion security/integrity/ima/ima_policy.c
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ static void ima_lsm_free_rule(struct ima_rule_entry *entry)
int i;

for (i = 0; i < MAX_LSM_RULES; i++) {
kfree(entry->lsm[i].rule);
security_filter_rule_free(entry->lsm[i].rule);
kfree(entry->lsm[i].args_p);
}
kfree(entry);
Expand Down

0 comments on commit 9ff8a61

Please sign in to comment.