From: Wang Nan <wangnan0@huawei.com>
To: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Ingo Molnar <mingo@redhat.com>,
Thomas Gleixner <tglx@linutronix.de>,
"Andi Kleen" <ak@linux.intel.com>,
Pei Feiyue <peifeiyue@huawei.com>, <x86@kernel.org>,
<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] kprobes/x86: opt: free optinsn cache when range check fails
Date: Tue, 29 Jul 2014 09:55:10 +0800 [thread overview]
Message-ID: <53D6FEFE.8060307@huawei.com> (raw)
In-Reply-To: <53D6FC38.8070801@hitachi.com>
On 2014/7/29 9:43, Masami Hiramatsu wrote:
> (2014/07/28 21:20), Wang Nan wrote:
>> This patch frees optinsn slot when range check error to prevent memory
>> leaks. Before this patch, cache entry in kprobe_insn_cache won't be
>> freed if kprobe optimizing fails due to range check failure.
>>
>> Signed-off-by: Wang Nan <wangnan0@huawei.com>
>
> Oops, thank you for finding it!
>
> Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
>
> BTW, would you really have hit this error?
> I'd like to know the case if this really happens.
I'm not really hit it on x86_64. I found this problem when trying to implement kprobe opt on arm.
On arm, relative jump can only branch on/backward 64MB, which makes it a realistic problem.
>
>> ---
>> arch/x86/kernel/kprobes/opt.c | 4 +++-
>> 1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/x86/kernel/kprobes/opt.c b/arch/x86/kernel/kprobes/opt.c
>> index f304773..f1314d0 100644
>> --- a/arch/x86/kernel/kprobes/opt.c
>> +++ b/arch/x86/kernel/kprobes/opt.c
>> @@ -338,8 +338,10 @@ int arch_prepare_optimized_kprobe(struct optimized_kprobe *op)
>> * a relative jump.
>> */
>> rel = (long)op->optinsn.insn - (long)op->kp.addr + RELATIVEJUMP_SIZE;
>> - if (abs(rel) > 0x7fffffff)
>> + if (abs(rel) > 0x7fffffff) {
>> + __arch_remove_optimized_kprobe(op, 0);
>> return -ERANGE;
>> + }
>>
>> buf = (u8 *)op->optinsn.insn;
>>
>>
>
>
next prev parent reply other threads:[~2014-07-29 1:55 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-28 12:20 [PATCH] kprobes/x86: opt: free optinsn cache when range check fails Wang Nan
2014-07-29 1:43 ` Masami Hiramatsu
2014-07-29 1:55 ` Wang Nan [this message]
2014-07-29 11:36 ` Masami Hiramatsu
2014-08-05 7:49 ` Wang Nan
2014-08-27 12:15 ` Wang Nan
2014-08-27 13:37 ` Masami Hiramatsu
2014-09-15 1:26 ` Wang Nan
2014-09-16 8:59 ` Ingo Molnar
2014-08-27 18:36 ` [tip:perf/urgent] kprobes/x86: Free 'optinsn' " tip-bot for Wang Nan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53D6FEFE.8060307@huawei.com \
--to=wangnan0@huawei.com \
--cc=ak@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mingo@redhat.com \
--cc=peifeiyue@huawei.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.