From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759400AbcBYFxK (ORCPT ); Thu, 25 Feb 2016 00:53:10 -0500 Received: from torg.zytor.com ([198.137.202.12]:54244 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1759460AbcBYFxG (ORCPT ); Thu, 25 Feb 2016 00:53:06 -0500 Date: Wed, 24 Feb 2016 21:51:31 -0800 From: tip-bot for Josh Poimboeuf Message-ID: Cc: peterz@infradead.org, torvalds@linux-foundation.org, luto@amacapital.net, masami.hiramatsu.pt@hitachi.com, bp@alien8.de, anil.s.keshavamurthy@intel.com, mingo@kernel.org, palves@redhat.com, linux-kernel@vger.kernel.org, mmarek@suse.cz, dvlasenk@redhat.com, bernd@petrovitsch.priv.at, jslaby@suse.cz, chris.j.arges@canonical.com, davem@davemloft.net, akpm@linux-foundation.org, acme@kernel.org, brgerst@gmail.com, luto@kernel.org, hpa@zytor.com, ananth@in.ibm.com, jpoimboe@redhat.com, namhyung@gmail.com, tglx@linutronix.de Reply-To: peterz@infradead.org, torvalds@linux-foundation.org, luto@amacapital.net, anil.s.keshavamurthy@intel.com, masami.hiramatsu.pt@hitachi.com, bp@alien8.de, palves@redhat.com, mingo@kernel.org, mmarek@suse.cz, bernd@petrovitsch.priv.at, dvlasenk@redhat.com, linux-kernel@vger.kernel.org, davem@davemloft.net, jslaby@suse.cz, chris.j.arges@canonical.com, brgerst@gmail.com, akpm@linux-foundation.org, acme@kernel.org, hpa@zytor.com, ananth@in.ibm.com, luto@kernel.org, namhyung@gmail.com, tglx@linutronix.de, jpoimboe@redhat.com In-Reply-To: <92d921b102fb865a7c254cfde9e4a0a72b9a781e.1453405861.git.jpoimboe@redhat.com> References: <92d921b102fb865a7c254cfde9e4a0a72b9a781e.1453405861.git.jpoimboe@redhat.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:x86/debug] x86/kprobes: Get rid of kretprobe_trampoline_holder() Git-Commit-ID: c1c355ce14c037666fbcb9453d9067c86bbdda5c X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: c1c355ce14c037666fbcb9453d9067c86bbdda5c Gitweb: http://git.kernel.org/tip/c1c355ce14c037666fbcb9453d9067c86bbdda5c Author: Josh Poimboeuf AuthorDate: Thu, 21 Jan 2016 16:49:28 -0600 Committer: Ingo Molnar CommitDate: Wed, 24 Feb 2016 08:35:44 +0100 x86/kprobes: Get rid of kretprobe_trampoline_holder() 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. Signed-off-by: Josh Poimboeuf Acked-by: Masami Hiramatsu Cc: Ananth N Mavinakayanahalli Cc: Andrew Morton Cc: Andy Lutomirski Cc: Andy Lutomirski Cc: Anil S Keshavamurthy Cc: Arnaldo Carvalho de Melo Cc: Bernd Petrovitsch Cc: Borislav Petkov Cc: Brian Gerst Cc: Chris J Arges Cc: David S. Miller Cc: Denys Vlasenko Cc: H. Peter Anvin Cc: Jiri Slaby Cc: Linus Torvalds Cc: Michal Marek Cc: Namhyung Kim Cc: Pedro Alves Cc: Peter Zijlstra Cc: Thomas Gleixner Cc: live-patching@vger.kernel.org Link: http://lkml.kernel.org/r/92d921b102fb865a7c254cfde9e4a0a72b9a781e.1453405861.git.jpoimboe@redhat.com Signed-off-by: Ingo Molnar --- 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); /*