Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1597944 > unrolled thread
| Started by | Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> |
|---|---|
| First post | 2017-03-10 17:30 +0100 |
| Last post | 2017-03-10 18:50 +0100 |
| Articles | 7 — 3 participants |
Back to article view | Back to linux.kernel
[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
| From | Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> |
|---|---|
| Date | 2017-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]
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Date | 2017-03-10 18:10 +0100 |
| Subject | Re: [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]
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Date | 2017-03-10 18:50 +0100 |
| Subject | Re: [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]
| From | Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> |
|---|---|
| Date | 2017-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]
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Date | 2017-03-10 19:10 +0100 |
| Subject | Re: [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]
| From | David Lin <dtwlin@google.com> |
|---|---|
| Date | 2017-03-10 19:40 +0100 |
| Subject | Re: [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]
| From | Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> |
|---|---|
| Date | 2017-03-10 18:50 +0100 |
| Subject | Re: [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