aa_compute_profile_mediates ORs the mediation marker at the hardcoded
AA_CLASS_NS bit for every class listed in unconfined_mediates[], so an
unconfined profile whose rules mediate only AA_CLASS_IO_URING advertises
NS mediation in label.mediates but never advertises IO_URING mediation.
Set the bit of the class being iterated.

Fixes: de4754c801f4 ("apparmor: carry mediation check on label")
Signed-off-by: Maxime Bélair <[email protected]>
---
 security/apparmor/policy.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/security/apparmor/policy.c b/security/apparmor/policy.c
index f6f1b72d7c3d..e9236e538b98 100644
--- a/security/apparmor/policy.c
+++ b/security/apparmor/policy.c
@@ -444,7 +444,7 @@ void aa_compute_profile_mediates(struct aa_profile *profile)
 
                for (pos = unconfined_mediates; *pos; pos++) {
                        if (ANY_RULE_MEDIATES(profile, *pos))
-                               profile->label.mediates |= ((u64) 1) << 
AA_CLASS_NS;
+                               profile->label.mediates |= ((u64) 1) << *pos;
                }
                return;
        }

base-commit: c431011ab65fd4ef205e3ce8cfc4b031c67768d9
-- 
2.51.0


Reply via email to