apparmor: Fix memleak in alloc_ns()
authorXiu Jianfeng <xiujianfeng@huawei.com>
Fri, 28 Oct 2022 12:33:20 +0000 (20:33 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 31 Dec 2022 12:32:31 +0000 (13:32 +0100)
[ Upstream commit e9e6fa49dbab6d84c676666f3fe7d360497fd65b ]

After changes in commit a1bd627b46d1 ("apparmor: share profile name on
replacement"), the hname member of struct aa_policy is not valid slab
object, but a subset of that, it can not be freed by kfree_sensitive(),
use aa_policy_destroy() to fix it.

Fixes: a1bd627b46d1 ("apparmor: share profile name on replacement")
Signed-off-by: Xiu Jianfeng <xiujianfeng@huawei.com>
Signed-off-by: John Johansen <john.johansen@canonical.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
security/apparmor/policy_ns.c

index 43beaad083feb3c1611ad0dca12e55f1e28565ec..78700d94b453384c44bc17e7ac20d1c20969aac9 100644 (file)
@@ -134,7 +134,7 @@ static struct aa_ns *alloc_ns(const char *prefix, const char *name)
        return ns;
 
 fail_unconfined:
-       kfree_sensitive(ns->base.hname);
+       aa_policy_destroy(&ns->base);
 fail_ns:
        kfree_sensitive(ns);
        return NULL;