From: Nathan Chancellor <nathan@kernel.org> To: Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will@kernel.org> Cc: Nick Desaulniers <ndesaulniers@google.com>, Sami Tolvanen <samitolvanen@google.com>, Jian Cai <jiancai@google.com>, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, clang-built-linux@googlegroups.com, Nathan Chancellor <nathan@kernel.org>, stable@vger.kernel.org Subject: [PATCH] arm64: alternatives: Move length validation in alternative_{insn,endif} Date: Tue, 13 Apr 2021 17:08:04 -0700 [thread overview] Message-ID: <20210414000803.662534-1-nathan@kernel.org> (raw) After commit 2decad92f473 ("arm64: mte: Ensure TIF_MTE_ASYNC_FAULT is set atomically"), LLVM's integrated assembler fails to build entry.S: <instantiation>:5:7: error: expected assembly-time absolute expression .org . - (664b-663b) + (662b-661b) ^ <instantiation>:6:7: error: expected assembly-time absolute expression .org . - (662b-661b) + (664b-663b) ^ The root cause is LLVM's assembler has a one-pass design, meaning it cannot figure out these instruction lengths when the .org directive is outside of the subsection that they are in, which was changed by the .arch_extension directive added in the above commit. Apply the same fix from commit 966a0acce2fc ("arm64/alternatives: move length validation inside the subsection") to the alternative_endif macro, shuffling the .org directives so that the length validation happen will always happen in the same subsections. alternative_insn has not shown any issue yet but it appears that it could have the same issue in the future so just preemptively change it. Cc: stable@vger.kernel.org Fixes: f7b93d42945c ("arm64/alternatives: use subsections for replacement sequences") Link: https://github.com/ClangBuiltLinux/linux/issues/1347 Signed-off-by: Nathan Chancellor <nathan@kernel.org> --- Apologies if my explanation or terminology is off, I am only now getting more familiar with assembly. arch/arm64/include/asm/alternative-macros.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/arm64/include/asm/alternative-macros.h b/arch/arm64/include/asm/alternative-macros.h index 5df500dcc627..8a078fc662ac 100644 --- a/arch/arm64/include/asm/alternative-macros.h +++ b/arch/arm64/include/asm/alternative-macros.h @@ -97,9 +97,9 @@ .popsection .subsection 1 663: \insn2 -664: .previous - .org . - (664b-663b) + (662b-661b) +664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) + .previous .endif .endm @@ -169,11 +169,11 @@ */ .macro alternative_endif 664: + .org . - (664b-663b) + (662b-661b) + .org . - (662b-661b) + (664b-663b) .if .Lasm_alt_mode==0 .previous .endif - .org . - (664b-663b) + (662b-661b) - .org . - (662b-661b) + (664b-663b) .endm /* base-commit: 738fa58ee1328481d1d7889e7c430b3401c571b9 -- 2.31.1.272.g89b43f80a5
WARNING: multiple messages have this Message-ID
From: Nathan Chancellor <nathan@kernel.org> To: Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will@kernel.org> Cc: Nick Desaulniers <ndesaulniers@google.com>, Sami Tolvanen <samitolvanen@google.com>, Jian Cai <jiancai@google.com>, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, clang-built-linux@googlegroups.com, Nathan Chancellor <nathan@kernel.org>, stable@vger.kernel.org Subject: [PATCH] arm64: alternatives: Move length validation in alternative_{insn, endif} Date: Tue, 13 Apr 2021 17:08:04 -0700 [thread overview] Message-ID: <20210414000803.662534-1-nathan@kernel.org> (raw) After commit 2decad92f473 ("arm64: mte: Ensure TIF_MTE_ASYNC_FAULT is set atomically"), LLVM's integrated assembler fails to build entry.S: <instantiation>:5:7: error: expected assembly-time absolute expression .org . - (664b-663b) + (662b-661b) ^ <instantiation>:6:7: error: expected assembly-time absolute expression .org . - (662b-661b) + (664b-663b) ^ The root cause is LLVM's assembler has a one-pass design, meaning it cannot figure out these instruction lengths when the .org directive is outside of the subsection that they are in, which was changed by the .arch_extension directive added in the above commit. Apply the same fix from commit 966a0acce2fc ("arm64/alternatives: move length validation inside the subsection") to the alternative_endif macro, shuffling the .org directives so that the length validation happen will always happen in the same subsections. alternative_insn has not shown any issue yet but it appears that it could have the same issue in the future so just preemptively change it. Cc: stable@vger.kernel.org Fixes: f7b93d42945c ("arm64/alternatives: use subsections for replacement sequences") Link: https://github.com/ClangBuiltLinux/linux/issues/1347 Signed-off-by: Nathan Chancellor <nathan@kernel.org> --- Apologies if my explanation or terminology is off, I am only now getting more familiar with assembly. arch/arm64/include/asm/alternative-macros.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/arm64/include/asm/alternative-macros.h b/arch/arm64/include/asm/alternative-macros.h index 5df500dcc627..8a078fc662ac 100644 --- a/arch/arm64/include/asm/alternative-macros.h +++ b/arch/arm64/include/asm/alternative-macros.h @@ -97,9 +97,9 @@ .popsection .subsection 1 663: \insn2 -664: .previous - .org . - (664b-663b) + (662b-661b) +664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) + .previous .endif .endm @@ -169,11 +169,11 @@ */ .macro alternative_endif 664: + .org . - (664b-663b) + (662b-661b) + .org . - (662b-661b) + (664b-663b) .if .Lasm_alt_mode==0 .previous .endif - .org . - (664b-663b) + (662b-661b) - .org . - (662b-661b) + (664b-663b) .endm /* base-commit: 738fa58ee1328481d1d7889e7c430b3401c571b9 -- 2.31.1.272.g89b43f80a5 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next reply other threads:[~2021-04-14 0:09 UTC|newest] Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-04-14 0:08 Nathan Chancellor [this message] 2021-04-14 0:08 ` [PATCH] arm64: alternatives: Move length validation in alternative_{insn, endif} Nathan Chancellor 2021-04-14 17:46 ` [PATCH] arm64: alternatives: Move length validation in alternative_{insn,endif} Sami Tolvanen 2021-04-14 17:46 ` [PATCH] arm64: alternatives: Move length validation in alternative_{insn, endif} Sami Tolvanen 2021-04-14 19:22 ` [PATCH] arm64: alternatives: Move length validation in alternative_{insn,endif} Nick Desaulniers 2021-04-14 19:22 ` [PATCH] arm64: alternatives: Move length validation in alternative_{insn, endif} Nick Desaulniers 2021-04-15 9:17 ` [PATCH] arm64: alternatives: Move length validation in alternative_{insn,endif} Catalin Marinas 2021-04-15 9:17 ` Catalin Marinas 2021-04-15 13:25 ` Nathan Chancellor 2021-04-15 13:25 ` Nathan Chancellor 2021-04-15 14:02 ` Catalin Marinas 2021-04-15 14:02 ` Catalin Marinas 2021-04-15 15:50 ` Sami Tolvanen 2021-04-15 15:50 ` [PATCH] arm64: alternatives: Move length validation in alternative_{insn, endif} Sami Tolvanen 2021-04-15 16:57 ` [PATCH] arm64: alternatives: Move length validation in alternative_{insn,endif} Catalin Marinas 2021-04-15 16:57 ` Catalin Marinas 2021-04-15 17:48 ` [PATCH] arm64: alternatives: Move length validation in alternative_{insn, endif} Catalin Marinas 2021-04-15 17:48 ` Catalin Marinas
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=20210414000803.662534-1-nathan@kernel.org \ --to=nathan@kernel.org \ --cc=catalin.marinas@arm.com \ --cc=clang-built-linux@googlegroups.com \ --cc=jiancai@google.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=ndesaulniers@google.com \ --cc=samitolvanen@google.com \ --cc=stable@vger.kernel.org \ --cc=will@kernel.org \ --subject='Re: [PATCH] arm64: alternatives: Move length validation in alternative_{insn,endif}' \ /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
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.