This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: [PATCH][take2][2/2] kprobe: kprobe-booster against 2.6.16-rc5 for i386
- From: Masami Hiramatsu <hiramatu at sdl dot hitachi dot co dot jp>
- To: Andrew Morton <akpm at osdl dot org>
- Cc: ananth at in dot ibm dot com, prasanna at in dot ibm dot com, anil dot s dot keshavamurthy at intel dot com, systemtap at sources dot redhat dot com, jkenisto at us dot ibm dot com, linux-kernel at vger dot kernel dot org, sugita at sdl dot hitachi dot co dot jp, soshima at redhat dot com, haoki at redhat dot com
- Date: Tue, 28 Feb 2006 15:07:16 +0900
- Subject: Re: [PATCH][take2][2/2] kprobe: kprobe-booster against 2.6.16-rc5 for i386
- References: <43DE0A4D.20908@sdl.hitachi.co.jp> <4402E920.5080402@sdl.hitachi.co.jp> <20060227185012.037c8830.akpm@osdl.org>
Hi, Andrew
Andrew Morton wrote:
> Masami Hiramatsu <hiramatu@sdl.hitachi.co.jp> wrote:
>> Here is a patch of kprobe-booster for i386 arch against linux-2.6.16-rc5.
>> The kprobe-booster patch is also under the influence of the NX-protection
>> support patch. So, I fixed that.
>>
>> Could you replace the previous patches with these patches?
>
> I'd prefer not to. Once a patch has been in -mm for this long I really
> prefer to not see wholesale replacements. When people do this to me I
> usually turn their replacements into incremental patches so we can see what
> changed. Which is useful.
>
> Your first patch was identical to what I already have, so I dropped that.
Thank you for your advice. I will re-create an additional patch
against recent -mm tree.
> Your second patch made these changes:
>
> --- devel/arch/i386/kernel/kprobes.c~kprobe-kprobe-booster-against-2616-rc5-for 2006-02-27 18:40:29.000000000 -0800
> +++ devel-akpm/arch/i386/kernel/kprobes.c 2006-02-27 18:40:57.000000000 -0800
> @@ -305,7 +305,7 @@ static int __kprobes kprobe_handler(stru
>
> if (p->ainsn.boostable == 1 &&
> #ifdef CONFIG_PREEMPT
> - !(pre_preempt_count) && /*
> + !(pre_preempt_count()) && /*
> * This enables booster when the direct
> * execution path aren't preempted.
> */
> @@ -313,7 +313,7 @@ static int __kprobes kprobe_handler(stru
> !p->post_handler && !p->break_handler ) {
> /* Boost up -- we can execute copied instructions directly */
> reset_current_kprobe();
> - regs->eip = (unsigned long)&p->ainsn.insn;
> + regs->eip = (unsigned long)p->ainsn.insn;
> preempt_enable_no_resched();
> return 1;
> }
>
> The first hunk is surely wrong - pre_preempt_count is a local unsigned
> integer, not a function.
I'm sorry. It's my fault. The first hunk is just a degradation.
> And I'm not sure about the second hunk either - surely an `eip' should
> point at an instruction, not be assigned the value of an instruction?
This change is important. Because NX-protection support patch makes
the ainsn.insn a pointer instead of a data structure, so now (&p->ainsn.insn)
means just an address of the pointer -- not the instruction address.
> So I'll drop both patches. If you have bugfixes, please make them relative
> to already-merged things. Against most-recent -mm is best, as I do fix
> patches up, and other people send fixes which you might not have merged
> locally. And please ensure that the changes compile and run with and
> without CONFIG_PREEMPT!
OK. I will get the latest -mm tree and test it.
And I will re-send the patch ASAP.
--
Masami HIRAMATSU
2nd Research Dept.
Hitachi, Ltd., Systems Development Laboratory
E-mail: hiramatu@sdl.hitachi.co.jp