kcsan: select CONFIG_CONSTRUCTORS

Message ID 20230215091503.1490152-1-arnd@kernel.org
State New
Headers
Series kcsan: select CONFIG_CONSTRUCTORS |

Commit Message

Arnd Bergmann Feb. 15, 2023, 9:14 a.m. UTC
  From: Arnd Bergmann <arnd@arndb.de>

Building a kcsan enabled kernel for x86_64 with gcc-11 results in a lot
of build warnings or errors without CONFIG_CONSTRUCTORS:

x86_64-linux-ld: error: unplaced orphan section `.ctors.65436' from `arch/x86/lib/copy_mc.o'
x86_64-linux-ld: error: unplaced orphan section `.ctors.65436' from `arch/x86/lib/cpu.o'
x86_64-linux-ld: error: unplaced orphan section `.ctors.65436' from `arch/x86/lib/csum-partial_64.o'
x86_64-linux-ld: error: unplaced orphan section `.ctors.65436' from `arch/x86/lib/csum-wrappers_64.o'
x86_64-linux-ld: error: unplaced orphan section `.ctors.65436' from `arch/x86/lib/insn-eval.o'
x86_64-linux-ld: error: unplaced orphan section `.ctors.65436' from `arch/x86/lib/insn.o'
x86_64-linux-ld: error: unplaced orphan section `.ctors.65436' from `arch/x86/lib/misc.o'

The same thing has been reported for mips64. I can't reproduce it for
any other compiler version, so I don't know if constructors are always
required here or if this is a gcc-11 specific implementation detail.

I see no harm in always enabling constructors here, and this reliably
fixes the build warnings for me.

Link: https://lore.kernel.org/lkml/202204181801.r3MMkwJv-lkp@intel.com/T/
Cc: Kees Cook <keescook@chromium.org>
See-also: 3e6631485fae ("vmlinux.lds.h: Keep .ctors.* with .ctors")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 lib/Kconfig.kcsan | 1 +
 1 file changed, 1 insertion(+)
  

Comments

Marco Elver Feb. 15, 2023, 9:25 a.m. UTC | #1
On Wed, 15 Feb 2023 at 10:15, Arnd Bergmann <arnd@kernel.org> wrote:
>
> From: Arnd Bergmann <arnd@arndb.de>
>
> Building a kcsan enabled kernel for x86_64 with gcc-11 results in a lot
> of build warnings or errors without CONFIG_CONSTRUCTORS:
>
> x86_64-linux-ld: error: unplaced orphan section `.ctors.65436' from `arch/x86/lib/copy_mc.o'
> x86_64-linux-ld: error: unplaced orphan section `.ctors.65436' from `arch/x86/lib/cpu.o'
> x86_64-linux-ld: error: unplaced orphan section `.ctors.65436' from `arch/x86/lib/csum-partial_64.o'
> x86_64-linux-ld: error: unplaced orphan section `.ctors.65436' from `arch/x86/lib/csum-wrappers_64.o'
> x86_64-linux-ld: error: unplaced orphan section `.ctors.65436' from `arch/x86/lib/insn-eval.o'
> x86_64-linux-ld: error: unplaced orphan section `.ctors.65436' from `arch/x86/lib/insn.o'
> x86_64-linux-ld: error: unplaced orphan section `.ctors.65436' from `arch/x86/lib/misc.o'
>
> The same thing has been reported for mips64. I can't reproduce it for
> any other compiler version, so I don't know if constructors are always
> required here or if this is a gcc-11 specific implementation detail.
>
> I see no harm in always enabling constructors here, and this reliably
> fixes the build warnings for me.
>
> Link: https://lore.kernel.org/lkml/202204181801.r3MMkwJv-lkp@intel.com/T/
> Cc: Kees Cook <keescook@chromium.org>
> See-also: 3e6631485fae ("vmlinux.lds.h: Keep .ctors.* with .ctors")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Reviewed-by: Marco Elver <elver@google.com>

Looks like KASAN does select CONSTRUCTORS already, so KCSAN should as well.

Do you have a tree to take this through, or should it go through -rcu
as usual for KCSAN patches?

Thanks,
-- Marco

> ---
>  lib/Kconfig.kcsan | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/lib/Kconfig.kcsan b/lib/Kconfig.kcsan
> index 4dedd61e5192..609ddfc73de5 100644
> --- a/lib/Kconfig.kcsan
> +++ b/lib/Kconfig.kcsan
> @@ -14,6 +14,7 @@ menuconfig KCSAN
>         bool "KCSAN: dynamic data race detector"
>         depends on HAVE_ARCH_KCSAN && HAVE_KCSAN_COMPILER
>         depends on DEBUG_KERNEL && !KASAN
> +       select CONSTRUCTORS
>         select STACKTRACE
>         help
>           The Kernel Concurrency Sanitizer (KCSAN) is a dynamic
> --
> 2.39.1
>
  
Arnd Bergmann Feb. 15, 2023, 9:48 a.m. UTC | #2
On Wed, Feb 15, 2023, at 10:25, Marco Elver wrote:
> On Wed, 15 Feb 2023 at 10:15, Arnd Bergmann <arnd@kernel.org> wrote:

> Looks like KASAN does select CONSTRUCTORS already, so KCSAN should as well.
>
> Do you have a tree to take this through, or should it go through -rcu
> as usual for KCSAN patches?

I don't have a tree for taking these build fixes, so it would be good if you could forward it as appropriate.

Thanks,

     Arnd
  
Paul E. McKenney Feb. 15, 2023, 10:42 p.m. UTC | #3
On Wed, Feb 15, 2023 at 10:48:11AM +0100, Arnd Bergmann wrote:
> On Wed, Feb 15, 2023, at 10:25, Marco Elver wrote:
> > On Wed, 15 Feb 2023 at 10:15, Arnd Bergmann <arnd@kernel.org> wrote:
> 
> > Looks like KASAN does select CONSTRUCTORS already, so KCSAN should as well.
> >
> > Do you have a tree to take this through, or should it go through -rcu
> > as usual for KCSAN patches?
> 
> I don't have a tree for taking these build fixes, so it would be good if you could forward it as appropriate.

Queued and pushed, thank you both!

Is this ready for the upcoming merge window, or would you rather that
I hold off until the v6.4 merge window?  (I am tempted to treat this
as a bug fix, thus sending it earlier rather than later, but figured I
should ask.)

							Thanx, Paul
  
Marco Elver Feb. 16, 2023, 7 a.m. UTC | #4
On Wed, 15 Feb 2023 at 23:42, Paul E. McKenney <paulmck@kernel.org> wrote:
>
> On Wed, Feb 15, 2023 at 10:48:11AM +0100, Arnd Bergmann wrote:
> > On Wed, Feb 15, 2023, at 10:25, Marco Elver wrote:
> > > On Wed, 15 Feb 2023 at 10:15, Arnd Bergmann <arnd@kernel.org> wrote:
> >
> > > Looks like KASAN does select CONSTRUCTORS already, so KCSAN should as well.
> > >
> > > Do you have a tree to take this through, or should it go through -rcu
> > > as usual for KCSAN patches?
> >
> > I don't have a tree for taking these build fixes, so it would be good if you could forward it as appropriate.
>
> Queued and pushed, thank you both!
>
> Is this ready for the upcoming merge window, or would you rather that
> I hold off until the v6.4 merge window?  (I am tempted to treat this
> as a bug fix, thus sending it earlier rather than later, but figured I
> should ask.)

I'd consider it a bug fix. If it survives the usual -next exposure, no
harm in sending it as a fix.

Thanks,
-- Marco
  
Paul E. McKenney Feb. 16, 2023, 6:36 p.m. UTC | #5
On Thu, Feb 16, 2023 at 08:00:00AM +0100, Marco Elver wrote:
> On Wed, 15 Feb 2023 at 23:42, Paul E. McKenney <paulmck@kernel.org> wrote:
> >
> > On Wed, Feb 15, 2023 at 10:48:11AM +0100, Arnd Bergmann wrote:
> > > On Wed, Feb 15, 2023, at 10:25, Marco Elver wrote:
> > > > On Wed, 15 Feb 2023 at 10:15, Arnd Bergmann <arnd@kernel.org> wrote:
> > >
> > > > Looks like KASAN does select CONSTRUCTORS already, so KCSAN should as well.
> > > >
> > > > Do you have a tree to take this through, or should it go through -rcu
> > > > as usual for KCSAN patches?
> > >
> > > I don't have a tree for taking these build fixes, so it would be good if you could forward it as appropriate.
> >
> > Queued and pushed, thank you both!
> >
> > Is this ready for the upcoming merge window, or would you rather that
> > I hold off until the v6.4 merge window?  (I am tempted to treat this
> > as a bug fix, thus sending it earlier rather than later, but figured I
> > should ask.)
> 
> I'd consider it a bug fix. If it survives the usual -next exposure, no
> harm in sending it as a fix.

It passed overnight tests, so I have sent it along to -next.  If there
are no issues, I will push it by the end of this coming week (which is
the first weke of the merge window).

							Thanx, Paul
  

Patch

diff --git a/lib/Kconfig.kcsan b/lib/Kconfig.kcsan
index 4dedd61e5192..609ddfc73de5 100644
--- a/lib/Kconfig.kcsan
+++ b/lib/Kconfig.kcsan
@@ -14,6 +14,7 @@  menuconfig KCSAN
 	bool "KCSAN: dynamic data race detector"
 	depends on HAVE_ARCH_KCSAN && HAVE_KCSAN_COMPILER
 	depends on DEBUG_KERNEL && !KASAN
+	select CONSTRUCTORS
 	select STACKTRACE
 	help
 	  The Kernel Concurrency Sanitizer (KCSAN) is a dynamic