linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@kernel.org>
To: "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com>
Cc: Masami Hiramatsu <mhiramat@kernel.org>,
	Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] jprobes: Ensure that the probepoint is at function entry
Date: Wed, 5 Jul 2017 12:42:16 +0200	[thread overview]
Message-ID: <20170705104216.674ejyueqquctsn5@gmail.com> (raw)
In-Reply-To: <20170629145655.5282-1-naveen.n.rao@linux.vnet.ibm.com>


* Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> wrote:

> Similar to commit 90ec5e89e393c ("kretprobes: Ensure probe location is
> at function entry"), ensure that the jprobe probepoint is at function
> entry.
> 
> Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
> ---
>  kernel/kprobes.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/kernel/kprobes.c b/kernel/kprobes.c
> index adfe3b4cfe05..950018609339 100644
> --- a/kernel/kprobes.c
> +++ b/kernel/kprobes.c
> @@ -1776,9 +1776,14 @@ int register_jprobes(struct jprobe **jps, int num)
>  		jp = jps[i];
>  		addr = arch_deref_entry_point(jp->entry);
>  
> -		/* Verify probepoint is a function entry point */
> +		/*
> +		 * Verify probepoint as well as the jprobe handler are
> +		 * function entry points.
> +		 */
>  		if (kallsyms_lookup_size_offset(addr, NULL, &offset) &&
> -		    offset == 0) {
> +				offset == 0 &&
> +				function_offset_within_entry(jp->kp.addr,
> +					jp->kp.symbol_name, jp->kp.offset)) {
>  			jp->kp.pre_handler = setjmp_pre_handler;
>  			jp->kp.break_handler = longjmp_break_handler;
>  			ret = register_kprobe(&jp->kp);

Yeah, so I agree with the fix, but the line breaks there are disgusting.

One solution would be to split out the iterator into a register_jprobe() function. 
Also, introduce a 'kp' temporary variable to simplify and shorten usage.

Also, 'function_offset_within_entry' is way too long a name, and it's also a 
minomer I think. The purpose of this function is to enforce that the relative 
'offset' of a new probe is at the standard function entry offset: i.e. 0 on most 
architectures, and some ABI dependent constant on PowerPC, right?

That's not at all clear from that name, plus it's a global namespace symbol, yet 
has no 'kprobes' prefix. So it should be named something like 
'kprobe_offset_valid()' or such, with an arch_kprobe_offset_valid() counterpart.

All of these cleanups should be in separate patches - with the fix in the end.

Thanks,

	Ingo

  reply	other threads:[~2017-07-05 10:42 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-29 14:56 [PATCH] jprobes: Ensure that the probepoint is at function entry Naveen N. Rao
2017-07-05 10:42 ` Ingo Molnar [this message]
2017-07-06 10:03   ` Masami Hiramatsu
2017-07-06 12:15     ` Ingo Molnar
2017-07-07  1:02       ` Masami Hiramatsu
2017-07-07 10:49         ` Ingo Molnar
2017-07-07 11:26           ` Naveen N. Rao

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=20170705104216.674ejyueqquctsn5@gmail.com \
    --to=mingo@kernel.org \
    --cc=ananth@linux.vnet.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mhiramat@kernel.org \
    --cc=naveen.n.rao@linux.vnet.ibm.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).