From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32702 invoked by alias); 24 Jan 2006 14:16:58 -0000 Received: (qmail 32693 invoked by uid 22791); 24 Jan 2006 14:16:57 -0000 X-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00,UNPARSEABLE_RELAY X-Spam-Check-By: sourceware.org Received: from mail4.hitachi.co.jp (HELO mail4.hitachi.co.jp) (133.145.228.5) by sourceware.org (qpsmtpd/0.31) with ESMTP; Tue, 24 Jan 2006 14:16:55 +0000 Received: from mlsv5.hitachi.co.jp (unknown [133.145.228.16]) by mail4.hitachi.co.jp (Postfix) with ESMTP id 5B7AD33CC3 for ; Tue, 24 Jan 2006 23:16:53 +0900 (JST) Received: from mfilter-s5.hitachi.co.jp by mlsv5.hitachi.co.jp (8.12.10/8.12.10) id k0OEGrAd030135; Tue, 24 Jan 2006 23:16:53 +0900 Received: from vshuts5.hitachi.co.jp (unverified) by mfilter-s5.hitachi.co.jp (Content Technologies SMTPRS 4.3.17) with SMTP id ; Tue, 24 Jan 2006 23:16:53 +0900 Received: from hsdlgw92.sdl.hitachi.co.jp ([133.144.7.20]) by vshuts5.hitachi.co.jp with SMTP id M2006012423165217289 ; Tue, 24 Jan 2006 23:16:53 +0900 Received: from vgate2.sdl.hitachi.co.jp by hsdlgw92.sdl.hitachi.co.jp (8.9.3/3.7W01100113) id XAA24297; Tue, 24 Jan 2006 23:16:52 +0900 Received: from maila.sdl.hitachi.co.jp ([133.144.14.196]) by vgate2.sdl.hitachi.co.jp (SAVSMTP 3.1.1.32) with SMTP id M2006012423165209942 ; Tue, 24 Jan 2006 23:16:52 +0900 Received: from [192.168.16.226] ([192.168.16.226]) by maila.sdl.hitachi.co.jp (8.13.1/3.7W04031011) with ESMTP id k0OEGpCZ014521; Tue, 24 Jan 2006 23:16:51 +0900 Message-ID: <43D636ED.3040900@sdl.hitachi.co.jp> Date: Tue, 24 Jan 2006 14:16:00 -0000 From: Masami Hiramatsu User-Agent: Mozilla Thunderbird 1.0.7 (Windows/20050923) X-Accept-Language: ja, en-us, en MIME-Version: 1.0 To: ananth@in.ibm.com Cc: Masami Hiramatsu , maneesh@in.ibm.com, anil.s.keshavamurthy@intel.com, systemtap@sources.redhat.com, Satoshi Oshima , Hideo Aoki , Yumiko Sugita Subject: Re: [RFC][Patch 1/2][take3]kprobe: kprobe-booster against 2.6.15-rc5-mm3 for i386 References: <43AAA8EC.9070303@sdl.hitachi.co.jp> <20060124070433.GA3607@in.ibm.com> <43D62A36.6010406@sdl.hitachi.co.jp> In-Reply-To: <43D62A36.6010406@sdl.hitachi.co.jp> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact systemtap-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Post: List-Help: , Sender: systemtap-owner@sourceware.org X-SW-Source: 2006-q1/txt/msg00250.txt.bz2 Hi, Here is a cleaned patch to clean resume_execution(). - fix indent of a label. - remove a whitespace. -- Masami HIRAMATSU 2nd Research Dept. Hitachi, Ltd., Systems Development Laboratory E-mail: hiramatu@sdl.hitachi.co.jp kprobes.c | 26 ++++++++++---------------- 1 files changed, 10 insertions(+), 16 deletions(-) diff -Narup a/arch/i386/kernel/kprobes.c b/arch/i386/kernel/kprobes.c --- a/arch/i386/kernel/kprobes.c 2006-01-24 19:07:26.000000000 +0900 +++ b/arch/i386/kernel/kprobes.c 2006-01-24 22:43:17.000000000 +0900 @@ -350,10 +350,10 @@ static void __kprobes resume_execution(s struct pt_regs *regs, struct kprobe_ctlblk *kcb) { unsigned long *tos = (unsigned long *)®s->esp; - unsigned long next_eip = 0; unsigned long copy_eip = (unsigned long)&p->ainsn.insn; unsigned long orig_eip = (unsigned long)p->addr; + regs->eflags &= ~TF_MASK; switch (p->ainsn.insn[0]) { case 0x9c: /* pushfl */ *tos &= ~(TF_MASK | IF_MASK); @@ -363,9 +363,9 @@ static void __kprobes resume_execution(s case 0xcb: case 0xc2: case 0xca: - regs->eflags &= ~TF_MASK; - /* eip is already adjusted, no more changes required*/ - return; + case 0xea: /* jmp absolute -- eip is correct */ + /* eip is already adjusted, no more changes required */ + goto no_change; case 0xe8: /* call relative - Fix return addr */ *tos = orig_eip + (*tos - copy_eip); break; @@ -373,27 +373,21 @@ static void __kprobes resume_execution(s if ((p->ainsn.insn[1] & 0x30) == 0x10) { /* call absolute, indirect */ /* Fix return addr; eip is correct. */ - next_eip = regs->eip; *tos = orig_eip + (*tos - copy_eip); + goto no_change; } else if (((p->ainsn.insn[1] & 0x31) == 0x20) || /* jmp near, absolute indirect */ ((p->ainsn.insn[1] & 0x31) == 0x21)) { /* jmp far, absolute indirect */ /* eip is correct. */ - next_eip = regs->eip; + goto no_change; } - break; - case 0xea: /* jmp absolute -- eip is correct */ - next_eip = regs->eip; - break; default: break; } - regs->eflags &= ~TF_MASK; - if (next_eip) { - regs->eip = next_eip; - } else { - regs->eip = orig_eip + (regs->eip - copy_eip); - } + regs->eip = orig_eip + (regs->eip - copy_eip); + +no_change: + return; } /*