From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933438AbbLTPnv (ORCPT ); Sun, 20 Dec 2015 10:43:51 -0500 Received: from v094114.home.net.pl ([79.96.170.134]:48652 "HELO v094114.home.net.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S933112AbbLTPnt (ORCPT ); Sun, 20 Dec 2015 10:43:49 -0500 From: "Rafael J. Wysocki" To: Josh Poimboeuf Cc: Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , x86@kernel.org, linux-kernel@vger.kernel.org, live-patching@vger.kernel.org, Michal Marek , Peter Zijlstra , Andy Lutomirski , Borislav Petkov , Linus Torvalds , Andi Kleen , Pedro Alves , Namhyung Kim , Bernd Petrovitsch , Chris J Arges , Andrew Morton , Jiri Slaby , Arnaldo Carvalho de Melo , Pavel Machek Subject: Re: [PATCH v15 23/25] x86/asm/power: Create stack frames in hibernate_asm_64.S Date: Sun, 20 Dec 2015 17:14:05 +0100 Message-ID: <2944043.g2biSOGpia@vostro.rjw.lan> User-Agent: KMail/4.11.5 (Linux/4.1.0-rc5+; KDE/4.11.5; x86_64; ; ) In-Reply-To: <409749d542c5edbbd93b1602b4e82dff78c958d3.1450442274.git.jpoimboe@redhat.com> References: <409749d542c5edbbd93b1602b4e82dff78c958d3.1450442274.git.jpoimboe@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="utf-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Friday, December 18, 2015 06:39:37 AM Josh Poimboeuf wrote: > swsusp_arch_suspend() and restore_registers() are callable non-leaf > functions which don't honor CONFIG_FRAME_POINTER, which can result in > bad stack traces. Also they aren't annotated as ELF callable functions > which can confuse tooling. > > Create a stack frame for them when CONFIG_FRAME_POINTER is enabled and > give them proper ELF function annotations. > > Signed-off-by: Josh Poimboeuf > Acked-by: Pavel Machek > Cc: Rafael J. Wysocki Acked-by: Rafael J. Wysocki > --- > arch/x86/power/hibernate_asm_64.S | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/arch/x86/power/hibernate_asm_64.S b/arch/x86/power/hibernate_asm_64.S > index e2386cb..4400a43 100644 > --- a/arch/x86/power/hibernate_asm_64.S > +++ b/arch/x86/power/hibernate_asm_64.S > @@ -21,8 +21,10 @@ > #include > #include > #include > +#include > > ENTRY(swsusp_arch_suspend) > + FRAME_BEGIN > movq $saved_context, %rax > movq %rsp, pt_regs_sp(%rax) > movq %rbp, pt_regs_bp(%rax) > @@ -50,7 +52,9 @@ ENTRY(swsusp_arch_suspend) > movq %rax, restore_cr3(%rip) > > call swsusp_save > + FRAME_END > ret > +ENDPROC(swsusp_arch_suspend) > > ENTRY(restore_image) > /* switch to temporary page tables */ > @@ -107,6 +111,7 @@ ENTRY(core_restore_code) > */ > > ENTRY(restore_registers) > + FRAME_BEGIN > /* go back to the original page tables */ > movq %rbx, %cr3 > > @@ -147,4 +152,6 @@ ENTRY(restore_registers) > /* tell the hibernation core that we've just restored the memory */ > movq %rax, in_suspend(%rip) > > + FRAME_END > ret > +ENDPROC(restore_registers) > -- I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center.