summaryrefslogtreecommitdiff
path: root/security
diff options
context:
space:
mode:
authorZygmunt Krynicki <me@zygoon.pl>2026-05-04 13:13:24 +0200
committerJohn Johansen <john.johansen@canonical.com>2026-06-13 20:14:08 -0700
commit7306c41672487a6c28430714be063bc6942c28f2 (patch)
tree67db6e93f58c0e86169c0e8ed2bde993ff0c0dbb /security
parent45cf568241048e560a81aa2053f06a62069f5640 (diff)
downloadlinux-7306c41672487a6c28430714be063bc6942c28f2.tar.gz
linux-7306c41672487a6c28430714be063bc6942c28f2.zip
apparmor: release exe file resources on path failure
get_current_exe_path() takes both an exe_file reference and a path reference before resolving the path name. If aa_path_name() failed, it returned immediately and leaked both references. Route the failure through the common cleanup path so fput() and path_put() always run after the references are acquired. Fixes: 8d34e16f7f2b ("apparmor: userns: Add support for execpath in userns") Reviewed-by: Ryan Lee <ryan.lee@canonical.com> Signed-off-by: Zygmunt Krynicki <me@zygoon.pl> Signed-off-by: John Johansen <john.johansen@canonical.com>
Diffstat (limited to 'security')
-rw-r--r--security/apparmor/task.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/security/apparmor/task.c b/security/apparmor/task.c
index 0db0e81b4600..6445cb5f8526 100644
--- a/security/apparmor/task.c
+++ b/security/apparmor/task.c
@@ -313,9 +313,12 @@ static const char *get_current_exe_path(char *buffer, int buffer_size)
p = exe_file->f_path;
path_get(&p);
- if (aa_path_name(&p, FLAG_VIEW_SUBNS, buffer, &path_str, NULL, NULL))
- return ERR_PTR(-ENOMEM);
+ if (aa_path_name(&p, FLAG_VIEW_SUBNS, buffer, &path_str, NULL, NULL)) {
+ path_str = ERR_PTR(-ENOMEM);
+ goto out;
+ }
+out:
fput(exe_file);
path_put(&p);