From: Fan Wu <wufan@kernel.org>
To: linux-security-module@vger.kernel.org
Cc: paul@paul-moore.com, linux-kernel@vger.kernel.org
Subject: [PATCH 1/2] ipe: fix use-after-free when auditing a newly loaded policy
Date: Tue, 22 Sep 2026 20:13:48 -0700 [thread overview]
Message-ID: <20260923031349.1216431-2-wufan@kernel.org> (raw)
In-Reply-To: <20260923031349.1216431-1-wufan@kernel.org>
new_policy() audits the policy after ipe_new_policyfs_node() publishes it
and drops the new directory's inode lock. A concurrent delete can free
the policy while ipe_audit_policy_load() is still using it.
Audit the successful load under that lock.
Fixes: f44554b5067b ("audit,ipe: add IPE auditing support")
Cc: stable@vger.kernel.org
Assisted-by: claude-opus-5.5
Signed-off-by: Fan Wu <wufan@kernel.org>
---
security/ipe/fs.c | 8 +++-----
security/ipe/policy_fs.c | 3 +++
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/security/ipe/fs.c b/security/ipe/fs.c
index 076c111c85c8..847a76afb93d 100644
--- a/security/ipe/fs.c
+++ b/security/ipe/fs.c
@@ -159,18 +159,16 @@ static ssize_t new_policy(struct file *f, const char __user *data,
}
rc = ipe_new_policyfs_node(p);
- if (rc)
- goto out;
out:
kfree(copy);
if (rc < 0) {
ipe_free_policy(p);
ipe_audit_policy_load(ERR_PTR(rc));
- } else {
- ipe_audit_policy_load(p);
+ return rc;
}
- return (rc < 0) ? rc : len;
+
+ return len;
}
static const struct file_operations np_fops = {
diff --git a/security/ipe/policy_fs.c b/security/ipe/policy_fs.c
index 9d92d8a14b13..a7aeb57483c6 100644
--- a/security/ipe/policy_fs.c
+++ b/security/ipe/policy_fs.c
@@ -481,6 +481,9 @@ int ipe_new_policyfs_node(struct ipe_policy *p)
inode_lock(root);
p->policyfs = policyfs;
root->i_private = p;
+ /* Only audit signed policies from userspace */
+ if (p->pkcs7)
+ ipe_audit_policy_load(p);
inode_unlock(root);
return 0;
--
2.55.0
next prev parent reply other threads:[~2026-09-23 3:13 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-23 3:13 [PATCH 0/2] ipe: fix two use-after-frees Fan Wu
2026-09-23 3:13 ` Fan Wu [this message]
2026-09-23 3:19 ` [PATCH 1/2] ipe: fix use-after-free when auditing a newly loaded policy sashiko-bot
2026-09-23 3:13 ` [PATCH 2/2] ipe: protect the dm-verity root hash with RCU Fan Wu
2026-09-23 3:20 ` sashiko-bot
2026-09-23 3:37 ` [PATCH 0/2] ipe: fix two use-after-frees Fan Wu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260923031349.1216431-2-wufan@kernel.org \
--to=wufan@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=paul@paul-moore.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.