Stable Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH] arm64/alternatives: move length validation inside the subsection
@ 2020-07-29 21:51 Sami Tolvanen
  2020-07-30 12:22 ` Catalin Marinas
  0 siblings, 1 reply; 6+ messages in thread
From: Sami Tolvanen @ 2020-07-29 21:51 UTC (permalink / raw)
  To: Catalin Marinas, Will Deacon, Ard Biesheuvel
  Cc: Nick Desaulniers, Kees Cook, linux-arm-kernel, linux-kernel,
	clang-built-linux, Sami Tolvanen, stable

Commit f7b93d42945c ("arm64/alternatives: use subsections for replacement
sequences") breaks LLVM's integrated assembler, because due to its
one-pass design, it cannot compute instruction sequence lengths before the
layout for the subsection has been finalized. This change fixes the build
by moving the .org directives inside the subsection, so they are processed
after the subsection layout is known.

Link: https://github.com/ClangBuiltLinux/linux/issues/1078
Cc: <stable@vger.kernel.org> # 4.14+
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
---
 arch/arm64/include/asm/alternative.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/include/asm/alternative.h b/arch/arm64/include/asm/alternative.h
index 12f0eb56a1cc..619db9b4c9d5 100644
--- a/arch/arm64/include/asm/alternative.h
+++ b/arch/arm64/include/asm/alternative.h
@@ -77,9 +77,9 @@ static inline void apply_alternatives_module(void *start, size_t length) { }
 	"663:\n\t"							\
 	newinstr "\n"							\
 	"664:\n\t"							\
-	".previous\n\t"							\
 	".org	. - (664b-663b) + (662b-661b)\n\t"			\
-	".org	. - (662b-661b) + (664b-663b)\n"			\
+	".org	. - (662b-661b) + (664b-663b)\n\t"			\
+	".previous\n"							\
 	".endif\n"
 
 #define __ALTERNATIVE_CFG_CB(oldinstr, feature, cfg_enabled, cb)	\

base-commit: 6ba1b005ffc388c2aeaddae20da29e4810dea298
-- 
2.28.0.163.g6104cc2f0b6-goog


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] arm64/alternatives: move length validation inside the subsection
  2020-07-29 21:51 [PATCH] arm64/alternatives: move length validation inside the subsection Sami Tolvanen
@ 2020-07-30 12:22 ` Catalin Marinas
  2020-07-30 15:13   ` Sami Tolvanen
  0 siblings, 1 reply; 6+ messages in thread
From: Catalin Marinas @ 2020-07-30 12:22 UTC (permalink / raw)
  To: Sami Tolvanen
  Cc: Will Deacon, Ard Biesheuvel, Nick Desaulniers, Kees Cook,
	linux-arm-kernel, linux-kernel, clang-built-linux, stable

On Wed, Jul 29, 2020 at 02:51:52PM -0700, Sami Tolvanen wrote:
> Commit f7b93d42945c ("arm64/alternatives: use subsections for replacement
> sequences") breaks LLVM's integrated assembler, because due to its
> one-pass design, it cannot compute instruction sequence lengths before the
> layout for the subsection has been finalized. This change fixes the build
> by moving the .org directives inside the subsection, so they are processed
> after the subsection layout is known.
> 
> Link: https://github.com/ClangBuiltLinux/linux/issues/1078
> Cc: <stable@vger.kernel.org> # 4.14+

Commit f7b93d42945c went in 5.8-rc4. Why is this cc stable from 4.14? If
Will picks it up for 5.8, it doesn't even need a cc stable.

Please add a Fixes: tag as well.

-- 
Catalin

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] arm64/alternatives: move length validation inside the subsection
  2020-07-30 12:22 ` Catalin Marinas
@ 2020-07-30 15:13   ` Sami Tolvanen
  2020-07-30 15:23     ` Catalin Marinas
  0 siblings, 1 reply; 6+ messages in thread
From: Sami Tolvanen @ 2020-07-30 15:13 UTC (permalink / raw)
  To: Catalin Marinas
  Cc: Will Deacon, Ard Biesheuvel, Nick Desaulniers, Kees Cook,
	linux-arm-kernel, LKML, clang-built-linux, stable

On Thu, Jul 30, 2020 at 5:22 AM Catalin Marinas <catalin.marinas@arm.com> wrote:
>
> On Wed, Jul 29, 2020 at 02:51:52PM -0700, Sami Tolvanen wrote:
> > Commit f7b93d42945c ("arm64/alternatives: use subsections for replacement
> > sequences") breaks LLVM's integrated assembler, because due to its
> > one-pass design, it cannot compute instruction sequence lengths before the
> > layout for the subsection has been finalized. This change fixes the build
> > by moving the .org directives inside the subsection, so they are processed
> > after the subsection layout is known.
> >
> > Link: https://github.com/ClangBuiltLinux/linux/issues/1078
> > Cc: <stable@vger.kernel.org> # 4.14+
>
> Commit f7b93d42945c went in 5.8-rc4. Why is this cc stable from 4.14? If
> Will picks it up for 5.8, it doesn't even need a cc stable.

Greg or Sasha can probably answer why, but this patch is in 4.14.189,
4.19.134, 5.4.53, and 5.7.10, which ended up breaking some downstream
Android kernel builds.

> Please add a Fixes: tag as well.

Sure, I'll send v2 shortly with the tag. Thanks.

Sami

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] arm64/alternatives: move length validation inside the subsection
  2020-07-30 15:13   ` Sami Tolvanen
@ 2020-07-30 15:23     ` Catalin Marinas
  2020-07-31  6:49       ` Greg KH
  0 siblings, 1 reply; 6+ messages in thread
From: Catalin Marinas @ 2020-07-30 15:23 UTC (permalink / raw)
  To: Sami Tolvanen
  Cc: Will Deacon, Ard Biesheuvel, Nick Desaulniers, Kees Cook,
	linux-arm-kernel, LKML, clang-built-linux, stable

On Thu, Jul 30, 2020 at 08:13:05AM -0700, Sami Tolvanen wrote:
> On Thu, Jul 30, 2020 at 5:22 AM Catalin Marinas <catalin.marinas@arm.com> wrote:
> >
> > On Wed, Jul 29, 2020 at 02:51:52PM -0700, Sami Tolvanen wrote:
> > > Commit f7b93d42945c ("arm64/alternatives: use subsections for replacement
> > > sequences") breaks LLVM's integrated assembler, because due to its
> > > one-pass design, it cannot compute instruction sequence lengths before the
> > > layout for the subsection has been finalized. This change fixes the build
> > > by moving the .org directives inside the subsection, so they are processed
> > > after the subsection layout is known.
> > >
> > > Link: https://github.com/ClangBuiltLinux/linux/issues/1078
> > > Cc: <stable@vger.kernel.org> # 4.14+
> >
> > Commit f7b93d42945c went in 5.8-rc4. Why is this cc stable from 4.14? If
> > Will picks it up for 5.8, it doesn't even need a cc stable.
> 
> Greg or Sasha can probably answer why, but this patch is in 4.14.189,
> 4.19.134, 5.4.53, and 5.7.10, which ended up breaking some downstream
> Android kernel builds.

I see but I don't think we need the explicit cc stable for 4.14. That's
why the Fixes tag is important. If a patch was back-ported, the
subsequent fixes should be picked by the stable maintainers as well.

-- 
Catalin

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] arm64/alternatives: move length validation inside the subsection
  2020-07-30 15:23     ` Catalin Marinas
@ 2020-07-31  6:49       ` Greg KH
  2020-07-31  9:31         ` Catalin Marinas
  0 siblings, 1 reply; 6+ messages in thread
From: Greg KH @ 2020-07-31  6:49 UTC (permalink / raw)
  To: Catalin Marinas
  Cc: Sami Tolvanen, Will Deacon, Ard Biesheuvel, Nick Desaulniers,
	Kees Cook, linux-arm-kernel, LKML, clang-built-linux, stable

On Thu, Jul 30, 2020 at 04:23:31PM +0100, Catalin Marinas wrote:
> On Thu, Jul 30, 2020 at 08:13:05AM -0700, Sami Tolvanen wrote:
> > On Thu, Jul 30, 2020 at 5:22 AM Catalin Marinas <catalin.marinas@arm.com> wrote:
> > >
> > > On Wed, Jul 29, 2020 at 02:51:52PM -0700, Sami Tolvanen wrote:
> > > > Commit f7b93d42945c ("arm64/alternatives: use subsections for replacement
> > > > sequences") breaks LLVM's integrated assembler, because due to its
> > > > one-pass design, it cannot compute instruction sequence lengths before the
> > > > layout for the subsection has been finalized. This change fixes the build
> > > > by moving the .org directives inside the subsection, so they are processed
> > > > after the subsection layout is known.
> > > >
> > > > Link: https://github.com/ClangBuiltLinux/linux/issues/1078
> > > > Cc: <stable@vger.kernel.org> # 4.14+
> > >
> > > Commit f7b93d42945c went in 5.8-rc4. Why is this cc stable from 4.14? If
> > > Will picks it up for 5.8, it doesn't even need a cc stable.
> > 
> > Greg or Sasha can probably answer why, but this patch is in 4.14.189,
> > 4.19.134, 5.4.53, and 5.7.10, which ended up breaking some downstream
> > Android kernel builds.
> 
> I see but I don't think we need the explicit cc stable for 4.14. That's
> why the Fixes tag is important. If a patch was back-ported, the
> subsequent fixes should be picked by the stable maintainers as well.

If you know it ahead of time, the explict "# kernel.version" hint is
always nice to have as it ensures I will try to backport it that far,
and if I have problems, I will ask for help.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] arm64/alternatives: move length validation inside the subsection
  2020-07-31  6:49       ` Greg KH
@ 2020-07-31  9:31         ` Catalin Marinas
  0 siblings, 0 replies; 6+ messages in thread
From: Catalin Marinas @ 2020-07-31  9:31 UTC (permalink / raw)
  To: Greg KH
  Cc: Sami Tolvanen, Will Deacon, Ard Biesheuvel, Nick Desaulniers,
	Kees Cook, linux-arm-kernel, LKML, clang-built-linux, stable

On Fri, Jul 31, 2020 at 08:49:15AM +0200, Greg Kroah-Hartman wrote:
> On Thu, Jul 30, 2020 at 04:23:31PM +0100, Catalin Marinas wrote:
> > On Thu, Jul 30, 2020 at 08:13:05AM -0700, Sami Tolvanen wrote:
> > > On Thu, Jul 30, 2020 at 5:22 AM Catalin Marinas <catalin.marinas@arm.com> wrote:
> > > >
> > > > On Wed, Jul 29, 2020 at 02:51:52PM -0700, Sami Tolvanen wrote:
> > > > > Commit f7b93d42945c ("arm64/alternatives: use subsections for replacement
> > > > > sequences") breaks LLVM's integrated assembler, because due to its
> > > > > one-pass design, it cannot compute instruction sequence lengths before the
> > > > > layout for the subsection has been finalized. This change fixes the build
> > > > > by moving the .org directives inside the subsection, so they are processed
> > > > > after the subsection layout is known.
> > > > >
> > > > > Link: https://github.com/ClangBuiltLinux/linux/issues/1078
> > > > > Cc: <stable@vger.kernel.org> # 4.14+
> > > >
> > > > Commit f7b93d42945c went in 5.8-rc4. Why is this cc stable from 4.14? If
> > > > Will picks it up for 5.8, it doesn't even need a cc stable.
> > > 
> > > Greg or Sasha can probably answer why, but this patch is in 4.14.189,
> > > 4.19.134, 5.4.53, and 5.7.10, which ended up breaking some downstream
> > > Android kernel builds.
> > 
> > I see but I don't think we need the explicit cc stable for 4.14. That's
> > why the Fixes tag is important. If a patch was back-ported, the
> > subsequent fixes should be picked by the stable maintainers as well.
> 
> If you know it ahead of time, the explict "# kernel.version" hint is
> always nice to have as it ensures I will try to backport it that far,
> and if I have problems, I will ask for help.

Good to know. Thanks for the clarification.

-- 
Catalin

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, back to index

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-29 21:51 [PATCH] arm64/alternatives: move length validation inside the subsection Sami Tolvanen
2020-07-30 12:22 ` Catalin Marinas
2020-07-30 15:13   ` Sami Tolvanen
2020-07-30 15:23     ` Catalin Marinas
2020-07-31  6:49       ` Greg KH
2020-07-31  9:31         ` Catalin Marinas

Stable Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/stable/0 stable/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 stable stable/ https://lore.kernel.org/stable \
		stable@vger.kernel.org
	public-inbox-index stable

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.stable


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git