From: sashiko-bot@kernel.org
To: "Will Deacon" <will@kernel.org>,
"Catalin Marinas" <catalin.marinas@arm.com>
Cc: "Joe Lawrence" <joe.lawrence@redhat.com>,
linux-arm-kernel@lists.infradead.org,
"Mark Rutland" <mark.rutland@arm.com>,
linux-kernel@vger.kernel.org, "Miroslav Benes" <mbenes@suse.cz>,
"Ard Biesheuvel" <ardb@kernel.org>,
"Petr Mladek" <pmladek@suse.com>, "Song Liu" <song@kernel.org>,
live-patching@vger.kernel.org
Subject: Re: [PATCH] arm64/module: Fix livepatch BTI exceptions with Clang 21+
Date: Fri, 07 Aug 2026 22:00:13 +0000 [thread overview]
Message-ID: <20260807220014.55FCD1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <ed4fe1f95071897859ec7fbe9176246cbd4962bf.1786138806.git.jpoimboe@kernel.org>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] Direct assignment to read-only memory in `module_emit_plt_entry()` and `module_emit_veneer_for_adrp()` causes a Data Abort kernel panic when resolving livepatch delayed relocations, and misses instruction cache flushing.
--
--- Patch [1]: [PATCH] arm64/module: Fix livepatch BTI exceptions with Clang 21+ ---
commit b15500d2c41dfd08d4a46e3f6cffc977c910f40a
Author: Josh Poimboeuf <jpoimboe@kernel.org>
arm64/module: Fix livepatch BTI exceptions with Clang 21+
This commit fixes a BTI exception during livepatch module loading by using
RET instead of BR when branching to static functions that lack a BTI landing
pad. It introduces a check for landing pads and adjusts the branch
instruction emitted by get_plt_entry().
> diff --git a/arch/arm64/kernel/module-plts.c b/arch/arm64/kernel/module-plts.c
> index 7afd370da9f48..4249b477daa8b 100644
> --- a/arch/arm64/kernel/module-plts.c
> +++ b/arch/arm64/kernel/module-plts.c
[ ... ]
> @@ -23,14 +26,45 @@ static struct plt_entry __get_adrp_add_pair(u64 dst, u64 pc,
> return (struct plt_entry){ cpu_to_le32(adrp), cpu_to_le32(add) };
> }
>
> +static bool plt_target_has_landing_pad(u64 dst)
> +{
[Severity: High]
This is a pre-existing issue, but does direct assignment to the PLT memory
region cause a Data Abort when livepatch resolves delayed relocations?
When a target module is loaded after a livepatch is active,
apply_relocate_add() calls module_emit_plt_entry() on the livepatch module.
Because the livepatch module is already in a live state, its .plt section
has been marked read-only via strict_module_rwx().
Looking at module_emit_plt_entry() in arch/arm64/kernel/module-plts.c:
module_emit_plt_entry() {
...
plt[i] = get_plt_entry(val, &plt[i]);
...
}
And similarly in module_emit_veneer_for_adrp():
module_emit_veneer_for_adrp() {
...
plt[i] = __get_adrp_add_pair(val, (u64)&plt[i], rd);
plt[i].br = cpu_to_le32(br);
...
}
Since this direct assignment bypasses __text_poke() or aarch64_insn_copy(),
does it trigger a panic due to writing to read-only memory, and also fail
to flush the instruction cache for the newly emitted PLT entry?
--
Sashiko AI review · https://sashiko.dev/#/patchset/ed4fe1f95071897859ec7fbe9176246cbd4962bf.1786138806.git.jpoimboe@kernel.org?part=1
next prev parent reply other threads:[~2026-08-07 22:00 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-07 21:46 [PATCH] arm64/module: Fix livepatch BTI exceptions with Clang 21+ Josh Poimboeuf
2026-08-07 22:00 ` sashiko-bot [this message]
2026-08-10 10:31 ` Will Deacon
2026-08-10 15:48 ` Josh Poimboeuf
2026-08-10 16:12 ` Ard Biesheuvel
2026-08-10 16:39 ` Josh Poimboeuf
2026-08-10 16:41 ` Nick Desaulniers
2026-08-11 9:44 ` Will Deacon
2026-08-11 12:02 ` Ard Biesheuvel
2026-08-11 13:18 ` Ard Biesheuvel
2026-08-11 14:23 ` Will Deacon
2026-08-11 14:55 ` Ard Biesheuvel
2026-08-11 15:05 ` Josh Poimboeuf
2026-08-11 16:27 ` Nick Desaulniers
2026-08-11 16:41 ` Josh Poimboeuf
2026-08-11 16:52 ` Nick Desaulniers
2026-08-11 16:54 ` Ard Biesheuvel
2026-08-11 17:05 ` Nick Desaulniers
2026-08-11 17:08 ` Ard Biesheuvel
2026-08-11 16:17 ` Nick Desaulniers
2026-08-11 17:23 ` Mark Brown
2026-08-10 16:25 ` Mark Brown
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=20260807220014.55FCD1F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=ardb@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=joe.lawrence@redhat.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=live-patching@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mbenes@suse.cz \
--cc=pmladek@suse.com \
--cc=sashiko-reviews@lists.linux.dev \
--cc=song@kernel.org \
--cc=will@kernel.org \
/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.