All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] objtool: fix CONFIG_STACK_VALIDATION warning for out-of-tree modules
@ 2017-02-15 18:21 Josh Poimboeuf
  2017-02-15 18:55 ` Marc MERLIN
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Josh Poimboeuf @ 2017-02-15 18:21 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel, Marc MERLIN, Jessica Yu, Michal Marek

When building a CONFIG_STACK_VALIDATION enabled kernel without the
libelf devel package installed, the Makefile prints a warning:

  "Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev, libelf-devel or elfutils-libelf-devel"

But when building an out-of-tree module, the warning doesn't show.
Instead it tries to use objtool, and the build fails with:

  /bin/sh: ./tools/objtool/objtool: No such file or directory

Make sure the warning and the disabling of objtool occur in all cases,
by moving the CONFIG_STACK_VALIDATION checks outside the 'ifeq
($(KBUILD_EXTMOD),)' block in the Makefile.

Reported-by: Marc MERLIN <marc@merlins.org>
Suggested-by: Jessica Yu <jeyu@redhat.com>
Fixes: 3b27a0c85d70 ("objtool: Detect and warn if libelf is missing and don't break the build")
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
---
 Makefile | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/Makefile b/Makefile
index 8e223e0..bcf7036 100644
--- a/Makefile
+++ b/Makefile
@@ -908,6 +908,18 @@ mod_sign_cmd = true
 endif
 export mod_sign_cmd
 
+ifdef CONFIG_STACK_VALIDATION
+  has_libelf := $(call try-run,\
+		echo "int main() {}" | $(HOSTCC) -xc -o /dev/null -lelf -,1,0)
+  ifeq ($(has_libelf),1)
+    objtool_target := tools/objtool FORCE
+  else
+    $(warning "Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev, libelf-devel or elfutils-libelf-devel")
+    SKIP_STACK_VALIDATION := 1
+    export SKIP_STACK_VALIDATION
+  endif
+endif
+
 
 ifeq ($(KBUILD_EXTMOD),)
 core-y		+= kernel/ certs/ mm/ fs/ ipc/ security/ crypto/ block/
@@ -1035,18 +1047,6 @@ prepare0: archprepare gcc-plugins
 # All the preparing..
 prepare: prepare0 prepare-objtool
 
-ifdef CONFIG_STACK_VALIDATION
-  has_libelf := $(call try-run,\
-		echo "int main() {}" | $(HOSTCC) -xc -o /dev/null -lelf -,1,0)
-  ifeq ($(has_libelf),1)
-    objtool_target := tools/objtool FORCE
-  else
-    $(warning "Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev, libelf-devel or elfutils-libelf-devel")
-    SKIP_STACK_VALIDATION := 1
-    export SKIP_STACK_VALIDATION
-  endif
-endif
-
 PHONY += prepare-objtool
 prepare-objtool: $(objtool_target)
 
-- 
2.7.4

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

* Re: [PATCH] objtool: fix CONFIG_STACK_VALIDATION warning for out-of-tree modules
  2017-02-15 18:21 [PATCH] objtool: fix CONFIG_STACK_VALIDATION warning for out-of-tree modules Josh Poimboeuf
@ 2017-02-15 18:55 ` Marc MERLIN
  2017-02-15 18:59 ` Jessica Yu
  2017-02-20  9:13 ` [tip:core/urgent] objtool: Fix CONFIG_STACK_VALIDATION=y " tip-bot for Josh Poimboeuf
  2 siblings, 0 replies; 4+ messages in thread
From: Marc MERLIN @ 2017-02-15 18:55 UTC (permalink / raw)
  To: Josh Poimboeuf; +Cc: Ingo Molnar, linux-kernel, Jessica Yu, Michal Marek

On Wed, Feb 15, 2017 at 12:21:17PM -0600, Josh Poimboeuf wrote:
> When building a CONFIG_STACK_VALIDATION enabled kernel without the
> libelf devel package installed, the Makefile prints a warning:
> 
>   "Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev, libelf-devel or elfutils-libelf-devel"
> 
> But when building an out-of-tree module, the warning doesn't show.
> Instead it tries to use objtool, and the build fails with:
> 
>   /bin/sh: ./tools/objtool/objtool: No such file or directory
> 
> Make sure the warning and the disabling of objtool occur in all cases,
> by moving the CONFIG_STACK_VALIDATION checks outside the 'ifeq
> ($(KBUILD_EXTMOD),)' block in the Makefile.
> 
> Reported-by: Marc MERLIN <marc@merlins.org>
> Suggested-by: Jessica Yu <jeyu@redhat.com>
> Fixes: 3b27a0c85d70 ("objtool: Detect and warn if libelf is missing and don't break the build")
> Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>

Tested-By: Marc MERLIN <marc@merlins.org>

saruman:/usr/src/linux-block# dpkg --remove libelf-dev
saruman:/usr/src/linux-block/tools/objtool# make clean
saruman:/usr/src/linux-block# dkms install  bbswitch/0.8

Kernel preparation unnecessary for this kernel.  Skipping...

Building module:
cleaning build area...
make -j8 KERNELRELEASE=4.10.0-rc7-mm3kb1+ KVERSION=4.10.0-rc7-mm3kb1+...(bad exit status: 2)
Error! Bad return status for module build on kernel: 4.10.0-rc7-mm3kb1+ (x86_64)

saruman:/usr/src/linux-block# patch -p1 -s < objtool.patch 

saruman:/usr/src/linux-block# dkms install  bbswitch/0.8

Kernel preparation unnecessary for this kernel.  Skipping...

Building module:
cleaning build area...
make -j8 KERNELRELEASE=4.10.0-rc7-mm3kb1+ KVERSION=4.10.0-rc7-mm3kb1+...
cleaning build area...

DKMS: build completed.

bbswitch.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.10.0-rc7-mm3kb1+/updates/dkms/

depmod...

DKMS: install completed.


All good, thank you.

Marc
-- 
"A mouse is a device used to point at the xterm you want to type in" - A.S.R.
Microsoft is to operating systems ....
                                      .... what McDonalds is to gourmet cooking
Home page: http://marc.merlins.org/                         | PGP 1024R/763BE901

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

* Re: [PATCH] objtool: fix CONFIG_STACK_VALIDATION warning for out-of-tree modules
  2017-02-15 18:21 [PATCH] objtool: fix CONFIG_STACK_VALIDATION warning for out-of-tree modules Josh Poimboeuf
  2017-02-15 18:55 ` Marc MERLIN
@ 2017-02-15 18:59 ` Jessica Yu
  2017-02-20  9:13 ` [tip:core/urgent] objtool: Fix CONFIG_STACK_VALIDATION=y " tip-bot for Josh Poimboeuf
  2 siblings, 0 replies; 4+ messages in thread
From: Jessica Yu @ 2017-02-15 18:59 UTC (permalink / raw)
  To: Josh Poimboeuf; +Cc: Ingo Molnar, linux-kernel, Marc MERLIN, Michal Marek

+++ Josh Poimboeuf [15/02/17 12:21 -0600]:
>When building a CONFIG_STACK_VALIDATION enabled kernel without the
>libelf devel package installed, the Makefile prints a warning:
>
>  "Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev, libelf-devel or elfutils-libelf-devel"
>
>But when building an out-of-tree module, the warning doesn't show.
>Instead it tries to use objtool, and the build fails with:
>
>  /bin/sh: ./tools/objtool/objtool: No such file or directory
>
>Make sure the warning and the disabling of objtool occur in all cases,
>by moving the CONFIG_STACK_VALIDATION checks outside the 'ifeq
>($(KBUILD_EXTMOD),)' block in the Makefile.
>
>Reported-by: Marc MERLIN <marc@merlins.org>
>Suggested-by: Jessica Yu <jeyu@redhat.com>
>Fixes: 3b27a0c85d70 ("objtool: Detect and warn if libelf is missing and don't break the build")
>Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>

With this patch the warning now prints for OOT modules, and more
importantly, the build no longer breaks for them, so:

Reviewed-by: Jessica Yu <jeyu@redhat.com>

>---
> Makefile | 24 ++++++++++++------------
> 1 file changed, 12 insertions(+), 12 deletions(-)
>
>diff --git a/Makefile b/Makefile
>index 8e223e0..bcf7036 100644
>--- a/Makefile
>+++ b/Makefile
>@@ -908,6 +908,18 @@ mod_sign_cmd = true
> endif
> export mod_sign_cmd
>
>+ifdef CONFIG_STACK_VALIDATION
>+  has_libelf := $(call try-run,\
>+		echo "int main() {}" | $(HOSTCC) -xc -o /dev/null -lelf -,1,0)
>+  ifeq ($(has_libelf),1)
>+    objtool_target := tools/objtool FORCE
>+  else
>+    $(warning "Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev, libelf-devel or elfutils-libelf-devel")
>+    SKIP_STACK_VALIDATION := 1
>+    export SKIP_STACK_VALIDATION
>+  endif
>+endif
>+
>
> ifeq ($(KBUILD_EXTMOD),)
> core-y		+= kernel/ certs/ mm/ fs/ ipc/ security/ crypto/ block/
>@@ -1035,18 +1047,6 @@ prepare0: archprepare gcc-plugins
> # All the preparing..
> prepare: prepare0 prepare-objtool
>
>-ifdef CONFIG_STACK_VALIDATION
>-  has_libelf := $(call try-run,\
>-		echo "int main() {}" | $(HOSTCC) -xc -o /dev/null -lelf -,1,0)
>-  ifeq ($(has_libelf),1)
>-    objtool_target := tools/objtool FORCE
>-  else
>-    $(warning "Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev, libelf-devel or elfutils-libelf-devel")
>-    SKIP_STACK_VALIDATION := 1
>-    export SKIP_STACK_VALIDATION
>-  endif
>-endif
>-
> PHONY += prepare-objtool
> prepare-objtool: $(objtool_target)
>
>-- 
>2.7.4
>

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

* [tip:core/urgent] objtool: Fix CONFIG_STACK_VALIDATION=y warning for out-of-tree modules
  2017-02-15 18:21 [PATCH] objtool: fix CONFIG_STACK_VALIDATION warning for out-of-tree modules Josh Poimboeuf
  2017-02-15 18:55 ` Marc MERLIN
  2017-02-15 18:59 ` Jessica Yu
@ 2017-02-20  9:13 ` tip-bot for Josh Poimboeuf
  2 siblings, 0 replies; 4+ messages in thread
From: tip-bot for Josh Poimboeuf @ 2017-02-20  9:13 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: marc, mmarek, hpa, jeyu, mingo, torvalds, peterz, jpoimboe,
	linux-kernel, tglx

Commit-ID:  9f0c18aec620bc9d82268b3cb937568dd07b43ff
Gitweb:     http://git.kernel.org/tip/9f0c18aec620bc9d82268b3cb937568dd07b43ff
Author:     Josh Poimboeuf <jpoimboe@redhat.com>
AuthorDate: Wed, 15 Feb 2017 12:21:17 -0600
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Mon, 20 Feb 2017 09:49:34 +0100

objtool: Fix CONFIG_STACK_VALIDATION=y warning for out-of-tree modules

When building a CONFIG_STACK_VALIDATION enabled kernel without the
libelf devel package installed, the Makefile prints a warning:

  "Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev, libelf-devel or elfutils-libelf-devel"

But when building an out-of-tree module, the warning doesn't show.
Instead it tries to use objtool, and the build fails with:

  /bin/sh: ./tools/objtool/objtool: No such file or directory

Make sure the warning and the disabling of objtool occur in all cases,
by moving the CONFIG_STACK_VALIDATION checks outside the 'ifeq
($(KBUILD_EXTMOD),)' block in the Makefile.

Tested-By: Marc MERLIN <marc@merlins.org>
Suggested-by: Jessica Yu <jeyu@redhat.com>
Reported-by: Marc MERLIN <marc@merlins.org>
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Reviewed-by: Jessica Yu <jeyu@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Michal Marek <mmarek@suse.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Fixes: 3b27a0c85d70 ("objtool: Detect and warn if libelf is missing and don't break the build")
Link: http://lkml.kernel.org/r/b3088ae4a8698143d4851965793c61fec2135b1f.1487182864.git.jpoimboe@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 Makefile | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/Makefile b/Makefile
index f1e6a02..32c8457 100644
--- a/Makefile
+++ b/Makefile
@@ -908,6 +908,18 @@ mod_sign_cmd = true
 endif
 export mod_sign_cmd
 
+ifdef CONFIG_STACK_VALIDATION
+  has_libelf := $(call try-run,\
+		echo "int main() {}" | $(HOSTCC) -xc -o /dev/null -lelf -,1,0)
+  ifeq ($(has_libelf),1)
+    objtool_target := tools/objtool FORCE
+  else
+    $(warning "Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev, libelf-devel or elfutils-libelf-devel")
+    SKIP_STACK_VALIDATION := 1
+    export SKIP_STACK_VALIDATION
+  endif
+endif
+
 
 ifeq ($(KBUILD_EXTMOD),)
 core-y		+= kernel/ certs/ mm/ fs/ ipc/ security/ crypto/ block/
@@ -1035,18 +1047,6 @@ prepare0: archprepare gcc-plugins
 # All the preparing..
 prepare: prepare0 prepare-objtool
 
-ifdef CONFIG_STACK_VALIDATION
-  has_libelf := $(call try-run,\
-		echo "int main() {}" | $(HOSTCC) -xc -o /dev/null -lelf -,1,0)
-  ifeq ($(has_libelf),1)
-    objtool_target := tools/objtool FORCE
-  else
-    $(warning "Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev, libelf-devel or elfutils-libelf-devel")
-    SKIP_STACK_VALIDATION := 1
-    export SKIP_STACK_VALIDATION
-  endif
-endif
-
 PHONY += prepare-objtool
 prepare-objtool: $(objtool_target)
 

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

end of thread, other threads:[~2017-02-20  9:42 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-15 18:21 [PATCH] objtool: fix CONFIG_STACK_VALIDATION warning for out-of-tree modules Josh Poimboeuf
2017-02-15 18:55 ` Marc MERLIN
2017-02-15 18:59 ` Jessica Yu
2017-02-20  9:13 ` [tip:core/urgent] objtool: Fix CONFIG_STACK_VALIDATION=y " tip-bot for Josh Poimboeuf

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.