]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
bpf, arm64: Do not audit capability check in do_jit()
authorOndrej Mosnacek <omosnace@redhat.com>
Thu, 4 Dec 2025 12:59:16 +0000 (13:59 +0100)
committerAlexei Starovoitov <ast@kernel.org>
Wed, 10 Dec 2025 07:25:11 +0000 (23:25 -0800)
Analogically to the x86 commit 881a9c9cb785 ("bpf: Do not audit
capability check in do_jit()"), change the capable() call to
ns_capable_noaudit() in order to avoid spurious SELinux denials in audit
log.

The commit log from that commit applies here as well:
"""
The failure of this check only results in a security mitigation being
applied, slightly affecting performance of the compiled BPF program. It
doesn't result in a failed syscall, an thus auditing a failed LSM
permission check for it is unwanted. For example with SELinux, it causes
a denial to be reported for confined processes running as root, which
tends to be flagged as a problem to be fixed in the policy. Yet
dontauditing or allowing CAP_SYS_ADMIN to the domain may not be
desirable, as it would allow/silence also other checks - either going
against the principle of least privilege or making debugging potentially
harder.

Fix it by changing it from capable() to ns_capable_noaudit(), which
instructs the LSMs to not audit the resulting denials.
"""

Fixes: f300769ead03 ("arm64: bpf: Only mitigate cBPF programs loaded by unprivileged users")
Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com>
Link: https://lore.kernel.org/r/20251204125916.441021-1-omosnace@redhat.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
arch/arm64/net/bpf_jit_comp.c

index 74dd29816f36a4a8f8a682433a5caf42d533bdbc..b6eb7a465ad248164db927bc8f0f2d01124e77da 100644 (file)
@@ -1004,7 +1004,7 @@ static void __maybe_unused build_bhb_mitigation(struct jit_ctx *ctx)
            arm64_get_spectre_v2_state() == SPECTRE_VULNERABLE)
                return;
 
-       if (capable(CAP_SYS_ADMIN))
+       if (ns_capable_noaudit(&init_user_ns, CAP_SYS_ADMIN))
                return;
 
        if (supports_clearbhb(SCOPE_SYSTEM)) {