Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1597944 > unrolled thread

[PATCH] jump label: fix passing kbuild_cflags when checking for asm goto support

Started byGleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
First post2017-03-10 17:30 +0100
Last post2017-03-10 18:50 +0100
Articles 7 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] jump label: fix passing kbuild_cflags when checking for asm  goto support Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> - 2017-03-10 17:30 +0100
    Re: [PATCH] jump label: fix passing kbuild_cflags when checking for  asm goto support Steven Rostedt <rostedt@goodmis.org> - 2017-03-10 18:10 +0100
      Re: [PATCH] jump label: fix passing kbuild_cflags when checking for  asm goto support Steven Rostedt <rostedt@goodmis.org> - 2017-03-10 18:50 +0100
        [PATCH v2] jump label: fix passing kbuild_cflags when checking for  asm goto support Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> - 2017-03-10 19:00 +0100
          Re: [PATCH v2] jump label: fix passing kbuild_cflags when checking  for asm goto support Steven Rostedt <rostedt@goodmis.org> - 2017-03-10 19:10 +0100
          Re: [PATCH v2] jump label: fix passing kbuild_cflags when checking  for asm goto support David Lin <dtwlin@google.com> - 2017-03-10 19:40 +0100
      Re: [PATCH] jump label: fix passing kbuild_cflags when checking for  asm goto support Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> - 2017-03-10 18:50 +0100

#1597944 — [PATCH] jump label: fix passing kbuild_cflags when checking for asm goto support

FromGleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
Date2017-03-10 17:30 +0100
Subject[PATCH] jump label: fix passing kbuild_cflags when checking for asm goto support
Message-ID<tjvAt-6xJ-3@gated-at.bofh.it>
The latest change of asm goto support check added passing of
KBUILD_CFLAGS to compiler.  When these flags reference gcc plugins,
there is a race condition between the build of these plugins and their
use in this asm goto support check.

This change moves the check before all these references are added
to KBUILD_CFLAGS.  This is correct because subsequent KBUILD_CFLAGS
modifications are not relevant to this check.

Reported-by: Anton V. Boyarshinov <boyarsh@altlinux.org>
Fixes: 35f860f9ba6a ("jump label: pass kbuild_cflags when checking for asm goto support")
Cc: stable@vger.kernel.org	# v4.10
Signed-off-by: Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
---
 Makefile | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/Makefile b/Makefile
index 165cf97..7e3aade 100644
--- a/Makefile
+++ b/Makefile
@@ -653,6 +653,12 @@ KBUILD_CFLAGS += $(call cc-ifversion, -lt, 0409, \
 # Tell gcc to never replace conditional load with a non-conditional one
 KBUILD_CFLAGS	+= $(call cc-option,--param=allow-store-data-races=0)
 
+# check for 'asm goto'
+ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC) $(KBUILD_CFLAGS)), y)
+	KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO
+	KBUILD_AFLAGS += -DCC_HAVE_ASM_GOTO
+endif
+
 include scripts/Makefile.gcc-plugins
 
 ifdef CONFIG_READABLE_ASM
@@ -798,12 +804,6 @@ KBUILD_CFLAGS   += $(call cc-option,-Werror=incompatible-pointer-types)
 # use the deterministic mode of AR if available
 KBUILD_ARFLAGS := $(call ar-option,D)
 
-# check for 'asm goto'
-ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC) $(KBUILD_CFLAGS)), y)
-	KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO
-	KBUILD_AFLAGS += -DCC_HAVE_ASM_GOTO
-endif
-
 include scripts/Makefile.kasan
 include scripts/Makefile.extrawarn
 include scripts/Makefile.ubsan

-- 
glebfm

[toc] | [next] | [standalone]


#1597960 — Re: [PATCH] jump label: fix passing kbuild_cflags when checking for asm goto support

FromSteven Rostedt <rostedt@goodmis.org>
Date2017-03-10 18:10 +0100
SubjectRe: [PATCH] jump label: fix passing kbuild_cflags when checking for asm goto support
Message-ID<tjwdb-72n-3@gated-at.bofh.it>
In reply to#1597944
On Fri, 10 Mar 2017 19:24:18 +0300
Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> wrote:

> The latest change of asm goto support check added passing of
> KBUILD_CFLAGS to compiler.  When these flags reference gcc plugins,
> there is a race condition between the build of these plugins and their
> use in this asm goto support check.
> 
> This change moves the check before all these references are added
> to KBUILD_CFLAGS.  This is correct because subsequent KBUILD_CFLAGS
> modifications are not relevant to this check.

What exactly breaks when the race happens?

-- Steve

> 
> Reported-by: Anton V. Boyarshinov <boyarsh@altlinux.org>
> Fixes: 35f860f9ba6a ("jump label: pass kbuild_cflags when checking for asm goto support")
> Cc: stable@vger.kernel.org	# v4.10
> Signed-off-by: Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
> Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
> ---
>  Makefile | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 165cf97..7e3aade 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -653,6 +653,12 @@ KBUILD_CFLAGS += $(call cc-ifversion, -lt, 0409, \
>  # Tell gcc to never replace conditional load with a non-conditional one
>  KBUILD_CFLAGS	+= $(call cc-option,--param=allow-store-data-races=0)
>  
> +# check for 'asm goto'
> +ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC) $(KBUILD_CFLAGS)), y)
> +	KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO
> +	KBUILD_AFLAGS += -DCC_HAVE_ASM_GOTO
> +endif
> +
>  include scripts/Makefile.gcc-plugins
>  
>  ifdef CONFIG_READABLE_ASM
> @@ -798,12 +804,6 @@ KBUILD_CFLAGS   += $(call cc-option,-Werror=incompatible-pointer-types)
>  # use the deterministic mode of AR if available
>  KBUILD_ARFLAGS := $(call ar-option,D)
>  
> -# check for 'asm goto'
> -ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC) $(KBUILD_CFLAGS)), y)
> -	KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO
> -	KBUILD_AFLAGS += -DCC_HAVE_ASM_GOTO
> -endif
> -
>  include scripts/Makefile.kasan
>  include scripts/Makefile.extrawarn
>  include scripts/Makefile.ubsan
> 

[toc] | [prev] | [next] | [standalone]


#1597977 — Re: [PATCH] jump label: fix passing kbuild_cflags when checking for asm goto support

FromSteven Rostedt <rostedt@goodmis.org>
Date2017-03-10 18:50 +0100
SubjectRe: [PATCH] jump label: fix passing kbuild_cflags when checking for asm goto support
Message-ID<tjwPT-7iA-1@gated-at.bofh.it>
In reply to#1597960
On Fri, 10 Mar 2017 20:39:52 +0300
Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> wrote:

> On Fri, Mar 10, 2017 at 12:04:22PM -0500, Steven Rostedt wrote:
> > On Fri, 10 Mar 2017 19:24:18 +0300
> > Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> wrote:
> >   
> > > The latest change of asm goto support check added passing of
> > > KBUILD_CFLAGS to compiler.  When these flags reference gcc plugins,
> > > there is a race condition between the build of these plugins and their
> > > use in this asm goto support check.
> > > 
> > > This change moves the check before all these references are added
> > > to KBUILD_CFLAGS.  This is correct because subsequent KBUILD_CFLAGS
> > > modifications are not relevant to this check.  
> > 
> > What exactly breaks when the race happens?  
> 
> Actually, this is not quite a race.  When you run "make bzImage" followed
> by "make modules", the kernel is always built with HAVE_JUMP_LABEL
> disabled, while the modules are built depending on CONFIG_JUMP_LABEL.
> If HAVE_JUMP_LABEL macro happens to be different, modules are built
> with undefined references:
> 
> ERROR: "static_key_slow_inc" [net/netfilter/xt_TEE.ko] undefined!
> ERROR: "static_key_slow_dec" [net/netfilter/xt_TEE.ko] undefined!
> ERROR: "static_key_slow_dec" [net/netfilter/nft_meta.ko] undefined!
> ERROR: "static_key_slow_inc" [net/netfilter/nft_meta.ko] undefined!
> ERROR: "nf_hooks_needed" [net/netfilter/ipvs/ip_vs.ko] undefined!
> ERROR: "nf_hooks_needed" [net/ipv6/ipv6.ko] undefined!
> ERROR: "static_key_count" [net/ipv6/ipv6.ko] undefined!
> ERROR: "static_key_slow_inc" [net/ipv6/ipv6.ko] undefined!
> ERROR: "nf_hooks_needed" [net/decnet/decnet.ko] undefined!
> 

Can you add the above info in the change log and repost?

Thanks,

-- Steve

[toc] | [prev] | [next] | [standalone]


#1597984 — [PATCH v2] jump label: fix passing kbuild_cflags when checking for asm goto support

FromGleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
Date2017-03-10 19:00 +0100
Subject[PATCH v2] jump label: fix passing kbuild_cflags when checking for asm goto support
Message-ID<tjwZA-7md-13@gated-at.bofh.it>
In reply to#1597977
The latest change of asm goto support check added passing of KBUILD_CFLAGS
to compiler.  When these flags reference gcc plugins that are not built yet,
the check fails.

When one runs "make bzImage" followed by "make modules", the kernel is always
built with HAVE_JUMP_LABEL disabled, while the modules are built depending on
CONFIG_JUMP_LABEL.  If HAVE_JUMP_LABEL macro happens to be different, modules
are built with undefined references, e.g.:

ERROR: "static_key_slow_inc" [net/netfilter/xt_TEE.ko] undefined!
ERROR: "static_key_slow_dec" [net/netfilter/xt_TEE.ko] undefined!
ERROR: "static_key_slow_dec" [net/netfilter/nft_meta.ko] undefined!
ERROR: "static_key_slow_inc" [net/netfilter/nft_meta.ko] undefined!
ERROR: "nf_hooks_needed" [net/netfilter/ipvs/ip_vs.ko] undefined!
ERROR: "nf_hooks_needed" [net/ipv6/ipv6.ko] undefined!
ERROR: "static_key_count" [net/ipv6/ipv6.ko] undefined!
ERROR: "static_key_slow_inc" [net/ipv6/ipv6.ko] undefined!

This change moves the check before all these references are added
to KBUILD_CFLAGS.  This is correct because subsequent KBUILD_CFLAGS
modifications are not relevant to this check.

Reported-by: Anton V. Boyarshinov <boyarsh@altlinux.org>
Fixes: 35f860f9ba6a ("jump label: pass kbuild_cflags when checking for asm goto support")
Cc: stable@vger.kernel.org	# v4.10
Signed-off-by: Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
---
v2: update description of the problem fixed by this patch

 Makefile | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/Makefile b/Makefile
index 165cf97..7e3aade 100644
--- a/Makefile
+++ b/Makefile
@@ -653,6 +653,12 @@ KBUILD_CFLAGS += $(call cc-ifversion, -lt, 0409, \
 # Tell gcc to never replace conditional load with a non-conditional one
 KBUILD_CFLAGS	+= $(call cc-option,--param=allow-store-data-races=0)
 
+# check for 'asm goto'
+ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC) $(KBUILD_CFLAGS)), y)
+	KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO
+	KBUILD_AFLAGS += -DCC_HAVE_ASM_GOTO
+endif
+
 include scripts/Makefile.gcc-plugins
 
 ifdef CONFIG_READABLE_ASM
@@ -798,12 +804,6 @@ KBUILD_CFLAGS   += $(call cc-option,-Werror=incompatible-pointer-types)
 # use the deterministic mode of AR if available
 KBUILD_ARFLAGS := $(call ar-option,D)
 
-# check for 'asm goto'
-ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC) $(KBUILD_CFLAGS)), y)
-	KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO
-	KBUILD_AFLAGS += -DCC_HAVE_ASM_GOTO
-endif
-
 include scripts/Makefile.kasan
 include scripts/Makefile.extrawarn
 include scripts/Makefile.ubsan
-- 
glebfm

[toc] | [prev] | [next] | [standalone]


#1597995 — Re: [PATCH v2] jump label: fix passing kbuild_cflags when checking for asm goto support

FromSteven Rostedt <rostedt@goodmis.org>
Date2017-03-10 19:10 +0100
SubjectRe: [PATCH v2] jump label: fix passing kbuild_cflags when checking for asm goto support
Message-ID<tjx9g-7F0-27@gated-at.bofh.it>
In reply to#1597984
Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>

Andrew, want to take this through your tree?

Thanks,

-- Steve


On Fri, 10 Mar 2017 20:55:36 +0300
Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> wrote:

> The latest change of asm goto support check added passing of KBUILD_CFLAGS
> to compiler.  When these flags reference gcc plugins that are not built yet,
> the check fails.
> 
> When one runs "make bzImage" followed by "make modules", the kernel is always
> built with HAVE_JUMP_LABEL disabled, while the modules are built depending on
> CONFIG_JUMP_LABEL.  If HAVE_JUMP_LABEL macro happens to be different, modules
> are built with undefined references, e.g.:
> 
> ERROR: "static_key_slow_inc" [net/netfilter/xt_TEE.ko] undefined!
> ERROR: "static_key_slow_dec" [net/netfilter/xt_TEE.ko] undefined!
> ERROR: "static_key_slow_dec" [net/netfilter/nft_meta.ko] undefined!
> ERROR: "static_key_slow_inc" [net/netfilter/nft_meta.ko] undefined!
> ERROR: "nf_hooks_needed" [net/netfilter/ipvs/ip_vs.ko] undefined!
> ERROR: "nf_hooks_needed" [net/ipv6/ipv6.ko] undefined!
> ERROR: "static_key_count" [net/ipv6/ipv6.ko] undefined!
> ERROR: "static_key_slow_inc" [net/ipv6/ipv6.ko] undefined!
> 
> This change moves the check before all these references are added
> to KBUILD_CFLAGS.  This is correct because subsequent KBUILD_CFLAGS
> modifications are not relevant to this check.
> 
> Reported-by: Anton V. Boyarshinov <boyarsh@altlinux.org>
> Fixes: 35f860f9ba6a ("jump label: pass kbuild_cflags when checking for asm goto support")
> Cc: stable@vger.kernel.org	# v4.10
> Signed-off-by: Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
> Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
> ---
> v2: update description of the problem fixed by this patch
> 
>  Makefile | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 165cf97..7e3aade 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -653,6 +653,12 @@ KBUILD_CFLAGS += $(call cc-ifversion, -lt, 0409, \
>  # Tell gcc to never replace conditional load with a non-conditional one
>  KBUILD_CFLAGS	+= $(call cc-option,--param=allow-store-data-races=0)
>  
> +# check for 'asm goto'
> +ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC) $(KBUILD_CFLAGS)), y)
> +	KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO
> +	KBUILD_AFLAGS += -DCC_HAVE_ASM_GOTO
> +endif
> +
>  include scripts/Makefile.gcc-plugins
>  
>  ifdef CONFIG_READABLE_ASM
> @@ -798,12 +804,6 @@ KBUILD_CFLAGS   += $(call cc-option,-Werror=incompatible-pointer-types)
>  # use the deterministic mode of AR if available
>  KBUILD_ARFLAGS := $(call ar-option,D)
>  
> -# check for 'asm goto'
> -ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC) $(KBUILD_CFLAGS)), y)
> -	KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO
> -	KBUILD_AFLAGS += -DCC_HAVE_ASM_GOTO
> -endif
> -
>  include scripts/Makefile.kasan
>  include scripts/Makefile.extrawarn
>  include scripts/Makefile.ubsan

[toc] | [prev] | [next] | [standalone]


#1598020 — Re: [PATCH v2] jump label: fix passing kbuild_cflags when checking for asm goto support

FromDavid Lin <dtwlin@google.com>
Date2017-03-10 19:40 +0100
SubjectRe: [PATCH v2] jump label: fix passing kbuild_cflags when checking for asm goto support
Message-ID<tjxCi-7Rw-27@gated-at.bofh.it>
In reply to#1597984
On Fri, Mar 10, 2017 at 9:55 AM, Gleb Fotengauer-Malinovskiy
<glebfm@altlinux.org> wrote:
>
> The latest change of asm goto support check added passing of KBUILD_CFLAGS
> to compiler.  When these flags reference gcc plugins that are not built yet,
> the check fails.
>
> When one runs "make bzImage" followed by "make modules", the kernel is always
> built with HAVE_JUMP_LABEL disabled, while the modules are built depending on
> CONFIG_JUMP_LABEL.  If HAVE_JUMP_LABEL macro happens to be different, modules
> are built with undefined references, e.g.:
>
> ERROR: "static_key_slow_inc" [net/netfilter/xt_TEE.ko] undefined!
> ERROR: "static_key_slow_dec" [net/netfilter/xt_TEE.ko] undefined!
> ERROR: "static_key_slow_dec" [net/netfilter/nft_meta.ko] undefined!
> ERROR: "static_key_slow_inc" [net/netfilter/nft_meta.ko] undefined!
> ERROR: "nf_hooks_needed" [net/netfilter/ipvs/ip_vs.ko] undefined!
> ERROR: "nf_hooks_needed" [net/ipv6/ipv6.ko] undefined!
> ERROR: "static_key_count" [net/ipv6/ipv6.ko] undefined!
> ERROR: "static_key_slow_inc" [net/ipv6/ipv6.ko] undefined!
>
> This change moves the check before all these references are added
> to KBUILD_CFLAGS.  This is correct because subsequent KBUILD_CFLAGS
> modifications are not relevant to this check.
>
> Reported-by: Anton V. Boyarshinov <boyarsh@altlinux.org>
> Fixes: 35f860f9ba6a ("jump label: pass kbuild_cflags when checking for asm goto support")
> Cc: stable@vger.kernel.org      # v4.10
> Signed-off-by: Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
> Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
> ---

Acked-by: David Lin <dtwlin@google.com>

[toc] | [prev] | [next] | [standalone]


#1597980 — Re: [PATCH] jump label: fix passing kbuild_cflags when checking for asm goto support

FromGleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
Date2017-03-10 18:50 +0100
SubjectRe: [PATCH] jump label: fix passing kbuild_cflags when checking for asm goto support
Message-ID<tjwPT-7iA-3@gated-at.bofh.it>
In reply to#1597960
On Fri, Mar 10, 2017 at 12:04:22PM -0500, Steven Rostedt wrote:
> On Fri, 10 Mar 2017 19:24:18 +0300
> Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> wrote:
> 
> > The latest change of asm goto support check added passing of
> > KBUILD_CFLAGS to compiler.  When these flags reference gcc plugins,
> > there is a race condition between the build of these plugins and their
> > use in this asm goto support check.
> > 
> > This change moves the check before all these references are added
> > to KBUILD_CFLAGS.  This is correct because subsequent KBUILD_CFLAGS
> > modifications are not relevant to this check.
> 
> What exactly breaks when the race happens?

Actually, this is not quite a race.  When you run "make bzImage" followed
by "make modules", the kernel is always built with HAVE_JUMP_LABEL
disabled, while the modules are built depending on CONFIG_JUMP_LABEL.
If HAVE_JUMP_LABEL macro happens to be different, modules are built
with undefined references:

ERROR: "static_key_slow_inc" [net/netfilter/xt_TEE.ko] undefined!
ERROR: "static_key_slow_dec" [net/netfilter/xt_TEE.ko] undefined!
ERROR: "static_key_slow_dec" [net/netfilter/nft_meta.ko] undefined!
ERROR: "static_key_slow_inc" [net/netfilter/nft_meta.ko] undefined!
ERROR: "nf_hooks_needed" [net/netfilter/ipvs/ip_vs.ko] undefined!
ERROR: "nf_hooks_needed" [net/ipv6/ipv6.ko] undefined!
ERROR: "static_key_count" [net/ipv6/ipv6.ko] undefined!
ERROR: "static_key_slow_inc" [net/ipv6/ipv6.ko] undefined!
ERROR: "nf_hooks_needed" [net/decnet/decnet.ko] undefined!

-- 
glebfm

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web