All of lore.kernel.org
 help / color / mirror / Atom feed
* [tip:x86/pti 19/20] arch/x86/entry/entry_64.o: warning: objtool: paranoid_entry()+0x11: call without frame pointer save/setup
@ 2018-02-12 11:33 kbuild test robot
  2018-02-12 13:13 ` Josh Poimboeuf
  2018-02-12 17:45 ` [PATCH] x86/entry/64: Fix paranoid_entry() frame pointer warning Josh Poimboeuf
  0 siblings, 2 replies; 4+ messages in thread
From: kbuild test robot @ 2018-02-12 11:33 UTC (permalink / raw)
  To: Dominik Brodowski; +Cc: kbuild-all, linux-kernel, tipbuild, Ingo Molnar

[-- Attachment #1: Type: text/plain, Size: 842 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/pti
head:   5a10e729bc0aa9420a23a70b169eadd229c27bc1
commit: f09d160992d129b6d8fada7543761d40f5b33596 [19/20] x86/entry/64: Get rid of the ALLOC_PT_GPREGS_ON_STACK and SAVE_AND_CLEAR_REGS macros
config: x86_64-randconfig-s0-02121550 (attached as .config)
compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026
reproduce:
        git checkout f09d160992d129b6d8fada7543761d40f5b33596
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All warnings (new ones prefixed by >>):

>> arch/x86/entry/entry_64.o: warning: objtool: paranoid_entry()+0x11: call without frame pointer save/setup

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 25490 bytes --]

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

* Re: [tip:x86/pti 19/20] arch/x86/entry/entry_64.o: warning: objtool: paranoid_entry()+0x11: call without frame pointer save/setup
  2018-02-12 11:33 [tip:x86/pti 19/20] arch/x86/entry/entry_64.o: warning: objtool: paranoid_entry()+0x11: call without frame pointer save/setup kbuild test robot
@ 2018-02-12 13:13 ` Josh Poimboeuf
  2018-02-12 17:45 ` [PATCH] x86/entry/64: Fix paranoid_entry() frame pointer warning Josh Poimboeuf
  1 sibling, 0 replies; 4+ messages in thread
From: Josh Poimboeuf @ 2018-02-12 13:13 UTC (permalink / raw)
  To: kbuild test robot
  Cc: Dominik Brodowski, kbuild-all, linux-kernel, tipbuild, Ingo Molnar

On Mon, Feb 12, 2018 at 07:33:27PM +0800, kbuild test robot wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/pti
> head:   5a10e729bc0aa9420a23a70b169eadd229c27bc1
> commit: f09d160992d129b6d8fada7543761d40f5b33596 [19/20] x86/entry/64: Get rid of the ALLOC_PT_GPREGS_ON_STACK and SAVE_AND_CLEAR_REGS macros
> config: x86_64-randconfig-s0-02121550 (attached as .config)
> compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026
> reproduce:
>         git checkout f09d160992d129b6d8fada7543761d40f5b33596
>         # save the attached .config to linux build tree
>         make ARCH=x86_64 
> 
> All warnings (new ones prefixed by >>):
> 
> >> arch/x86/entry/entry_64.o: warning: objtool: paranoid_entry()+0x11: call without frame pointer save/setup
> 
> ---
> 0-DAY kernel test infrastructure                Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Oops, looks like one of my suggested unwind hint changes wasn't so good
for the frame pointer case.  The below should fix it.  I'll submit a
proper patch in a little bit after running it through 0-day.

diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index cfbf43366731..1c54204207d8 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -1128,6 +1128,7 @@ idtentry machine_check		do_mce			has_error_code=0	paranoid=1
  * Return: ebx=0: need swapgs on exit, ebx=1: otherwise
  */
 ENTRY(paranoid_entry)
+	UNWIND_HINT_FUNC
 	cld
 	movl	$1, %ebx
 	movl	$MSR_GS_BASE, %ecx
@@ -1141,7 +1142,7 @@ ENTRY(paranoid_entry)
 	SAVE_AND_SWITCH_TO_KERNEL_CR3 scratch_reg=%rax save_reg=%r14
 
 	ret
-ENDPROC(paranoid_entry)
+END(paranoid_entry)
 
 /*
  * "Paranoid" exit path from exception stack.  This is invoked

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

* [PATCH] x86/entry/64: Fix paranoid_entry() frame pointer warning
  2018-02-12 11:33 [tip:x86/pti 19/20] arch/x86/entry/entry_64.o: warning: objtool: paranoid_entry()+0x11: call without frame pointer save/setup kbuild test robot
  2018-02-12 13:13 ` Josh Poimboeuf
@ 2018-02-12 17:45 ` Josh Poimboeuf
  2018-02-13  9:03   ` [tip:x86/pti] " tip-bot for Josh Poimboeuf
  1 sibling, 1 reply; 4+ messages in thread
From: Josh Poimboeuf @ 2018-02-12 17:45 UTC (permalink / raw)
  To: kbuild test robot
  Cc: Dominik Brodowski, kbuild-all, linux-kernel, tipbuild, Ingo Molnar

With the following commit:

  f09d160992d1 ("x86/entry/64: Get rid of the ALLOC_PT_GPREGS_ON_STACK and SAVE_AND_CLEAR_REGS macros")

... one of my suggested improvements triggered a frame pointer warning:

  arch/x86/entry/entry_64.o: warning: objtool: paranoid_entry()+0x11: call without frame pointer save/setup

The warning is correct for the build-time code, but it's actually not
relevant at runtime because of paravirt patching.  The paravirt swapgs
call gets replaced with either a SWAPGS instruction or NOPs at runtime.

Go back to the previous behavior by removing the ELF function annotation
for paranoid_entry() and adding an unwind hint, which effectively
silences the warning.

Reported-by: kbuild test robot <fengguang.wu@intel.com>
Fixes: f09d160992d1 ("x86/entry/64: Get rid of the ALLOC_PT_GPREGS_ON_STACK and SAVE_AND_CLEAR_REGS macros")
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
---
 arch/x86/entry/entry_64.S | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index cfbf43366731..1c54204207d8 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -1128,6 +1128,7 @@ idtentry machine_check		do_mce			has_error_code=0	paranoid=1
  * Return: ebx=0: need swapgs on exit, ebx=1: otherwise
  */
 ENTRY(paranoid_entry)
+	UNWIND_HINT_FUNC
 	cld
 	movl	$1, %ebx
 	movl	$MSR_GS_BASE, %ecx
@@ -1141,7 +1142,7 @@ ENTRY(paranoid_entry)
 	SAVE_AND_SWITCH_TO_KERNEL_CR3 scratch_reg=%rax save_reg=%r14
 
 	ret
-ENDPROC(paranoid_entry)
+END(paranoid_entry)
 
 /*
  * "Paranoid" exit path from exception stack.  This is invoked
-- 
2.14.3

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

* [tip:x86/pti] x86/entry/64: Fix paranoid_entry() frame pointer warning
  2018-02-12 17:45 ` [PATCH] x86/entry/64: Fix paranoid_entry() frame pointer warning Josh Poimboeuf
@ 2018-02-13  9:03   ` tip-bot for Josh Poimboeuf
  0 siblings, 0 replies; 4+ messages in thread
From: tip-bot for Josh Poimboeuf @ 2018-02-13  9:03 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: tglx, linux, hpa, fengguang.wu, linux-kernel, mingo, peterz,
	jpoimboe, torvalds

Commit-ID:  b3ccefaed922529e6a67de7b30af5aa38c76ace9
Gitweb:     https://git.kernel.org/tip/b3ccefaed922529e6a67de7b30af5aa38c76ace9
Author:     Josh Poimboeuf <jpoimboe@redhat.com>
AuthorDate: Mon, 12 Feb 2018 11:45:03 -0600
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Tue, 13 Feb 2018 09:04:55 +0100

x86/entry/64: Fix paranoid_entry() frame pointer warning

With the following commit:

  f09d160992d1 ("x86/entry/64: Get rid of the ALLOC_PT_GPREGS_ON_STACK and SAVE_AND_CLEAR_REGS macros")

... one of my suggested improvements triggered a frame pointer warning:

  arch/x86/entry/entry_64.o: warning: objtool: paranoid_entry()+0x11: call without frame pointer save/setup

The warning is correct for the build-time code, but it's actually not
relevant at runtime because of paravirt patching.  The paravirt swapgs
call gets replaced with either a SWAPGS instruction or NOPs at runtime.

Go back to the previous behavior by removing the ELF function annotation
for paranoid_entry() and adding an unwind hint, which effectively
silences the warning.

Reported-by: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Dominik Brodowski <linux@dominikbrodowski.net>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: kbuild-all@01.org
Cc: tipbuild@zytor.com
Fixes: f09d160992d1 ("x86/entry/64: Get rid of the ALLOC_PT_GPREGS_ON_STACK and SAVE_AND_CLEAR_REGS macros")
Link: http://lkml.kernel.org/r/20180212174503.5acbymg5z6p32snu@treble
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/entry/entry_64.S | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index cfbf433..1c5420420 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -1128,6 +1128,7 @@ idtentry machine_check		do_mce			has_error_code=0	paranoid=1
  * Return: ebx=0: need swapgs on exit, ebx=1: otherwise
  */
 ENTRY(paranoid_entry)
+	UNWIND_HINT_FUNC
 	cld
 	movl	$1, %ebx
 	movl	$MSR_GS_BASE, %ecx
@@ -1141,7 +1142,7 @@ ENTRY(paranoid_entry)
 	SAVE_AND_SWITCH_TO_KERNEL_CR3 scratch_reg=%rax save_reg=%r14
 
 	ret
-ENDPROC(paranoid_entry)
+END(paranoid_entry)
 
 /*
  * "Paranoid" exit path from exception stack.  This is invoked

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

end of thread, other threads:[~2018-02-13  9:04 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-12 11:33 [tip:x86/pti 19/20] arch/x86/entry/entry_64.o: warning: objtool: paranoid_entry()+0x11: call without frame pointer save/setup kbuild test robot
2018-02-12 13:13 ` Josh Poimboeuf
2018-02-12 17:45 ` [PATCH] x86/entry/64: Fix paranoid_entry() frame pointer warning Josh Poimboeuf
2018-02-13  9:03   ` [tip:x86/pti] " 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.