From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751353AbcAUXmv (ORCPT ); Thu, 21 Jan 2016 18:42:51 -0500 Received: from mail7.hitachi.co.jp ([133.145.228.42]:41737 "EHLO mail7.hitachi.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750900AbcAUXmu (ORCPT ); Thu, 21 Jan 2016 18:42:50 -0500 From: =?utf-8?B?5bmz5p2+6ZuF5bezIC8gSElSQU1BVFXvvIxNQVNBTUk=?= To: "'Josh Poimboeuf'" , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , "x86@kernel.org" CC: "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 , Ananth N Mavinakayanahalli , Anil S Keshavamurthy , "David S. Miller" Subject: RE: [PATCH 24/33] x86/kprobes: Get rid of kretprobe_trampoline_holder() Thread-Topic: [PATCH 24/33] x86/kprobes: Get rid of kretprobe_trampoline_holder() Thread-Index: AQHRVJ5EyVeug6v18k6KX5M9LNE2o58GoRdg Date: Thu, 21 Jan 2016 23:42:44 +0000 Message-ID: <50399556C9727B4D88A595C8584AAB37B4DB9D06@GSjpTKYDCembx31.service.hitachi.net> References: <92d921b102fb865a7c254cfde9e4a0a72b9a781e.1453405861.git.jpoimboe@redhat.com> In-Reply-To: <92d921b102fb865a7c254cfde9e4a0a72b9a781e.1453405861.git.jpoimboe@redhat.com> Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.198.219.40] Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id u0LNguTY002927 >From: Josh Poimboeuf [mailto:jpoimboe@redhat.com] > >The kretprobe_trampoline_holder() wrapper around kretprobe_trampoline() >isn't used anywhere and adds some unnecessary frame pointer instructions >which never execute. Instead, just make kretprobe_trampoline() a proper >ELF function. > Looks good to me :) Acked-by: Masami Hiramatsu Thanks! >Signed-off-by: Josh Poimboeuf >Cc: Ananth N Mavinakayanahalli >Cc: Anil S Keshavamurthy >Cc: "David S. Miller" >Cc: Masami Hiramatsu >--- > arch/x86/kernel/kprobes/core.c | 57 +++++++++++++++++++++--------------------- > 1 file changed, 28 insertions(+), 29 deletions(-) > >diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c >index 1deffe6..5b187df 100644 >--- a/arch/x86/kernel/kprobes/core.c >+++ b/arch/x86/kernel/kprobes/core.c >@@ -671,38 +671,37 @@ NOKPROBE_SYMBOL(kprobe_int3_handler); > * When a retprobed function returns, this code saves registers and > * calls trampoline_handler() runs, which calls the kretprobe's handler. > */ >-static void __used kretprobe_trampoline_holder(void) >-{ >- asm volatile ( >- ".global kretprobe_trampoline\n" >- "kretprobe_trampoline: \n" >+asm( >+ ".global kretprobe_trampoline\n" >+ ".type kretprobe_trampoline, @function\n" >+ "kretprobe_trampoline:\n" > #ifdef CONFIG_X86_64 >- /* We don't bother saving the ss register */ >- " pushq %rsp\n" >- " pushfq\n" >- SAVE_REGS_STRING >- " movq %rsp, %rdi\n" >- " call trampoline_handler\n" >- /* Replace saved sp with true return address. */ >- " movq %rax, 152(%rsp)\n" >- RESTORE_REGS_STRING >- " popfq\n" >+ /* We don't bother saving the ss register */ >+ " pushq %rsp\n" >+ " pushfq\n" >+ SAVE_REGS_STRING >+ " movq %rsp, %rdi\n" >+ " call trampoline_handler\n" >+ /* Replace saved sp with true return address. */ >+ " movq %rax, 152(%rsp)\n" >+ RESTORE_REGS_STRING >+ " popfq\n" > #else >- " pushf\n" >- SAVE_REGS_STRING >- " movl %esp, %eax\n" >- " call trampoline_handler\n" >- /* Move flags to cs */ >- " movl 56(%esp), %edx\n" >- " movl %edx, 52(%esp)\n" >- /* Replace saved flags with true return address. */ >- " movl %eax, 56(%esp)\n" >- RESTORE_REGS_STRING >- " popf\n" >+ " pushf\n" >+ SAVE_REGS_STRING >+ " movl %esp, %eax\n" >+ " call trampoline_handler\n" >+ /* Move flags to cs */ >+ " movl 56(%esp), %edx\n" >+ " movl %edx, 52(%esp)\n" >+ /* Replace saved flags with true return address. */ >+ " movl %eax, 56(%esp)\n" >+ RESTORE_REGS_STRING >+ " popf\n" > #endif >- " ret\n"); >-} >-NOKPROBE_SYMBOL(kretprobe_trampoline_holder); >+ " ret\n" >+ ".size kretprobe_trampoline, .-kretprobe_trampoline\n" >+); > NOKPROBE_SYMBOL(kretprobe_trampoline); > > /* >-- >2.4.3