summaryrefslogtreecommitdiff
path: root/security
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2026-10-22 09:55:12 -1000
committerLinus Torvalds <torvalds@linux-foundation.org>2026-10-22 09:55:12 -1000
commitbbc48daecac6c69ccbce4005aa2a681298e2fc7d (patch)
treeb5c0b56132d8479e376f3491ed30b8af38e4465b /security
parent31aa19260278943f8539da6837f03fdeadf4aa7e (diff)
parente2f08fadb48509c239e47cdaf81438c162395932 (diff)
Merge tag 'ipe-pr-20261019' of git://git.kernel.org/pub/scm/linux/kernel/git/wufan/ipe
Pull IPE updates from Fan Wu: - Fix an extra empty audit record on enforcement changes ipe_audit_enforce() started an audit buffer but logged the state change with audit_log(), which emits its own record. Ending the unused buffer produced an additional empty AUDIT_MAC_STATUS record every time the enforcement state was changed. - Keep the name and token tables in sync with their enums The audit name tables now use designated initializers, so each name stays bound to its enum value, and static assertions on the policy parser token tables break the build if an enum value is added without a matching token. - Constify token_default() and correct a comment about policy text ownership, with no functional changes - Fix an invalid sgid value in an audit event example in the docs - Point the docs to the new IPE website and test suite repository * tag 'ipe-pr-20261019' of git://git.kernel.org/pub/scm/linux/kernel/git/wufan/ipe: ipe: update the project and test suite links ipe: fix enforcement audit ipe: correct policy text ownership comment ipe: check parser token table sizes ipe: use designated initializers for audit name tables ipe: constify token_default() ipe: fix invalid sgid value in audit event documentation
Diffstat (limited to 'security')
-rw-r--r--security/ipe/audit.c52
-rw-r--r--security/ipe/policy.c2
-rw-r--r--security/ipe/policy_parser.c10
3 files changed, 32 insertions, 32 deletions
diff --git a/security/ipe/audit.c b/security/ipe/audit.c
index 93fb59fbddd6..b6f8fb54085a 100644
--- a/security/ipe/audit.c
+++ b/security/ipe/audit.c
@@ -34,34 +34,34 @@
"new_policy_digest=" IPE_AUDIT_HASH_ALG ":"
static const char *const audit_op_names[__IPE_OP_MAX + 1] = {
- "EXECUTE",
- "FIRMWARE",
- "KMODULE",
- "KEXEC_IMAGE",
- "KEXEC_INITRAMFS",
- "POLICY",
- "X509_CERT",
- "UNKNOWN",
+ [IPE_OP_EXEC] = "EXECUTE",
+ [IPE_OP_FIRMWARE] = "FIRMWARE",
+ [IPE_OP_KERNEL_MODULE] = "KMODULE",
+ [IPE_OP_KEXEC_IMAGE] = "KEXEC_IMAGE",
+ [IPE_OP_KEXEC_INITRAMFS] = "KEXEC_INITRAMFS",
+ [IPE_OP_POLICY] = "POLICY",
+ [IPE_OP_X509] = "X509_CERT",
+ [IPE_OP_INVALID] = "UNKNOWN",
};
static const char *const audit_hook_names[__IPE_HOOK_MAX] = {
- "BPRM_CHECK",
- "BPRM_CREDS_FOR_EXEC",
- "MMAP",
- "MPROTECT",
- "KERNEL_READ",
- "KERNEL_LOAD",
+ [IPE_HOOK_BPRM_CHECK] = "BPRM_CHECK",
+ [IPE_HOOK_BPRM_CREDS_FOR_EXEC] = "BPRM_CREDS_FOR_EXEC",
+ [IPE_HOOK_MMAP] = "MMAP",
+ [IPE_HOOK_MPROTECT] = "MPROTECT",
+ [IPE_HOOK_KERNEL_READ] = "KERNEL_READ",
+ [IPE_HOOK_KERNEL_LOAD] = "KERNEL_LOAD",
};
static const char *const audit_prop_names[__IPE_PROP_MAX] = {
- "boot_verified=FALSE",
- "boot_verified=TRUE",
- "dmverity_roothash=",
- "dmverity_signature=FALSE",
- "dmverity_signature=TRUE",
- "fsverity_digest=",
- "fsverity_signature=FALSE",
- "fsverity_signature=TRUE",
+ [IPE_PROP_BOOT_VERIFIED_FALSE] = "boot_verified=FALSE",
+ [IPE_PROP_BOOT_VERIFIED_TRUE] = "boot_verified=TRUE",
+ [IPE_PROP_DMV_ROOTHASH] = "dmverity_roothash=",
+ [IPE_PROP_DMV_SIG_FALSE] = "dmverity_signature=FALSE",
+ [IPE_PROP_DMV_SIG_TRUE] = "dmverity_signature=TRUE",
+ [IPE_PROP_FSV_DIGEST] = "fsverity_digest=",
+ [IPE_PROP_FSV_SIG_FALSE] = "fsverity_signature=FALSE",
+ [IPE_PROP_FSV_SIG_TRUE] = "fsverity_signature=TRUE",
};
/**
@@ -262,18 +262,10 @@ void ipe_audit_policy_load(const struct ipe_policy *const p)
*/
void ipe_audit_enforce(bool new_enforce, bool old_enforce)
{
- struct audit_buffer *ab;
-
- ab = audit_log_start(audit_context(), GFP_KERNEL, AUDIT_MAC_STATUS);
- if (!ab)
- return;
-
audit_log(audit_context(), GFP_KERNEL, AUDIT_MAC_STATUS,
"enforcing=%d old_enforcing=%d auid=%u ses=%u"
" enabled=1 old-enabled=1 lsm=ipe res=1",
new_enforce, old_enforce,
from_kuid(&init_user_ns, audit_get_loginuid(current)),
audit_get_sessionid(current));
-
- audit_log_end(ab);
}
diff --git a/security/ipe/policy.c b/security/ipe/policy.c
index 827867be4fac..e542329726bc 100644
--- a/security/ipe/policy.c
+++ b/security/ipe/policy.c
@@ -52,7 +52,7 @@ void ipe_free_policy(struct ipe_policy *p)
ipe_del_policyfs_node(p);
ipe_free_parsed_policy(p->parsed);
/*
- * p->text is allocated only when p->pkcs7 is not NULL
+ * p->text is allocated only when p->pkcs7 is NULL
* otherwise it points to the plaintext data inside the pkcs7
*/
if (!p->pkcs7)
diff --git a/security/ipe/policy_parser.c b/security/ipe/policy_parser.c
index 6fa5bebf8471..309a61594e1d 100644
--- a/security/ipe/policy_parser.c
+++ b/security/ipe/policy_parser.c
@@ -128,6 +128,8 @@ static const match_table_t header_tokens = {
{__IPE_HEADER_MAX, NULL}
};
+static_assert(ARRAY_SIZE(header_tokens) == __IPE_HEADER_MAX + 1);
+
/**
* parse_header() - Parse policy header information.
* @line: Supplies header line to be parsed.
@@ -201,7 +203,7 @@ out:
* * %false - The token is not "DEFAULT"
* * %true - The token is "DEFAULT"
*/
-static bool token_default(char *token)
+static bool token_default(const char *token)
{
return !strcmp(token, "DEFAULT");
}
@@ -240,6 +242,8 @@ static const match_table_t operation_tokens = {
{IPE_OP_INVALID, NULL}
};
+static_assert(ARRAY_SIZE(operation_tokens) == __IPE_OP_MAX + 1);
+
/**
* parse_operation() - Parse the operation type given a token string.
* @t: Supplies the token string to be parsed.
@@ -259,6 +263,8 @@ static const match_table_t action_tokens = {
{IPE_ACTION_INVALID, NULL}
};
+static_assert(ARRAY_SIZE(action_tokens) == __IPE_ACTION_MAX + 1);
+
/**
* parse_action() - Parse the action type given a token string.
* @t: Supplies the token string to be parsed.
@@ -284,6 +290,8 @@ static const match_table_t property_tokens = {
{IPE_PROP_INVALID, NULL}
};
+static_assert(ARRAY_SIZE(property_tokens) == __IPE_PROP_MAX + 1);
+
/**
* parse_property() - Parse a rule property given a token string.
* @t: Supplies the token string to be parsed.