--- v25
+++ v27
@@ -42,7 +42,7 @@
measure func=KEXEC_KERNEL_CHECK pcr=4
diff --git a/security/integrity/ima/ima_policy.c b/security/integrity/ima/ima_policy.c
-index ce4b8a70ca43..42a11f2c1068 100644
+index 5c40677e881c..d804b9a0dd95 100644
--- a/security/integrity/ima/ima_policy.c
+++ b/security/integrity/ima/ima_policy.c
@@ -79,8 +79,9 @@ struct ima_rule_entry {
@@ -149,10 +149,10 @@
Audit_equal,
- rule->lsm[i].rules);
+ rule->lsm[i].rule);
+ break;
default:
break;
- }
-@@ -964,7 +976,7 @@ enum {
+@@ -966,7 +978,7 @@ enum {
Opt_uid_lt, Opt_euid_lt, Opt_fowner_lt,
Opt_appraise_type, Opt_appraise_flag,
Opt_permit_directio, Opt_pcr, Opt_template, Opt_keyrings,
@@ -161,7 +161,7 @@
};
static const match_table_t policy_tokens = {
-@@ -1002,6 +1014,7 @@ static const match_table_t policy_tokens = {
+@@ -1004,6 +1016,7 @@ static const match_table_t policy_tokens = {
{Opt_template, "template=%s"},
{Opt_keyrings, "keyrings=%s"},
{Opt_label, "label=%s"},
@@ -169,7 +169,7 @@
{Opt_err, NULL}
};
-@@ -1010,7 +1023,7 @@ static int ima_lsm_rule_init(struct ima_rule_entry *entry,
+@@ -1012,7 +1025,7 @@ static int ima_lsm_rule_init(struct ima_rule_entry *entry,
{
int result;
@@ -178,7 +178,7 @@
return -EINVAL;
entry->lsm[lsm_rule].args_p = match_strdup(args);
-@@ -1020,8 +1033,8 @@ static int ima_lsm_rule_init(struct ima_rule_entry *entry,
+@@ -1022,8 +1035,8 @@ static int ima_lsm_rule_init(struct ima_rule_entry *entry,
entry->lsm[lsm_rule].type = audit_type;
result = ima_filter_rule_init(entry->lsm[lsm_rule].type, Audit_equal,
entry->lsm[lsm_rule].args_p,
@@ -189,7 +189,7 @@
pr_warn("rule for LSM \'%s\' is undefined\n",
entry->lsm[lsm_rule].args_p);
-@@ -1559,6 +1572,19 @@ static int ima_parse_rule(char *rule, struct ima_rule_entry *entry)
+@@ -1561,6 +1574,19 @@ static int ima_parse_rule(char *rule, struct ima_rule_entry *entry)
&(template_desc->num_fields));
entry->template = template_desc;
break;
@@ -209,7 +209,7 @@
case Opt_err:
ima_log_string(ab, "UNKNOWN", p);
result = -EINVAL;
-@@ -1595,6 +1621,7 @@ ssize_t ima_parse_add_rule(char *rule)
+@@ -1597,6 +1623,7 @@ ssize_t ima_parse_add_rule(char *rule)
struct ima_rule_entry *entry;
ssize_t result, len;
int audit_info = 0;
@@ -217,7 +217,7 @@
p = strsep(&rule, "\n");
len = strlen(p) + 1;
-@@ -1612,6 +1639,9 @@ ssize_t ima_parse_add_rule(char *rule)
+@@ -1614,6 +1641,9 @@ ssize_t ima_parse_add_rule(char *rule)
INIT_LIST_HEAD(&entry->list);
@@ -227,7 +227,7 @@
result = ima_parse_rule(p, entry);
if (result) {
ima_free_rule(entry);
-@@ -1828,7 +1858,7 @@ int ima_policy_show(struct seq_file *m, void *v)
+@@ -1830,7 +1860,7 @@ int ima_policy_show(struct seq_file *m, void *v)
}
for (i = 0; i < MAX_LSM_RULES; i++) {
@@ -236,7 +236,7 @@
switch (i) {
case LSM_OBJ_USER:
seq_printf(m, pt(Opt_obj_user),
-@@ -1870,6 +1900,9 @@ int ima_policy_show(struct seq_file *m, void *v)
+@@ -1872,6 +1902,9 @@ int ima_policy_show(struct seq_file *m, void *v)
seq_puts(m, "appraise_flag=check_blacklist ");
if (entry->flags & IMA_PERMIT_DIRECTIO)
seq_puts(m, "permit_directio ");