public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
To: Ingo Molnar <mingo@kernel.org>
Cc: Pratyush Anand <panand@redhat.com>,
	Ananth N Mavinakayanahalli <ananth@in.ibm.com>,
	Rusty Russell <rusty@rustcorp.com.au>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Ingo Molnar <mingo@redhat.com>, Rob Landley <rob@landley.net>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	"David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH tip/master 1/3] kprobes: Support blacklist functions in module
Date: Sun, 19 Jul 2015 12:15:55 +0900	[thread overview]
Message-ID: <55AB166B.9040509@hitachi.com> (raw)
In-Reply-To: <20150717121037.GA9437@gmail.com>

On 2015/07/17 21:10, Ingo Molnar wrote:
> 
> * Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> wrote:
> 
>> To blacklist the functions in a module (e.g. user-defined
>> kprobe handler and the functions invoked from it), expand
>> blacklist support for modules.
>> With this change, users can use NOKPROBE_SYMBOL() macro in
>> their own modules.
> 
> Btw., whatever happened with renaming '__kprobes' to '__nokprobe' and using that 
> consistently to blacklist certain functions?

Yes, in this part, __kprobes marked functions placed in .kprobes.text section
are safely added to the blacklist :)

-----
+       if (err >= 0 && __kprobes_text_start != __kprobes_text_end) {
+               /* The __kprobes marked functions must not be probed */
+               err = kprobe_blacklist_add_range(
+                                       (unsigned long)__kprobes_text_start,
+                                       (unsigned long)__kprobes_text_end);
+       }
-----


> 
> Also, shouldn't we convert such instances:
> 
> 	static int notifier_call_chain(struct notifier_block **nl,
>                                unsigned long val, void *v,
>                                int nr_to_call, int *nr_calls)
> 
> 	...
> 
> 	NOKPROBE_SYMBOL(notifier_call_chain);
> 
> to:
> 
> 	static int __nokprobe notifier_call_chain(struct notifier_block **nl,
>                                unsigned long val, void *v,
>                                int nr_to_call, int *nr_calls)
> 
> ?

For some symbols we can do that. But it can conflict with other __section
attributes e.g. __sched, since a function must be placed in only one
section. So, IMHO, using section for expressing its attribute is not
a good idea, but I couldn't find another option in common function attribute.

https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Function-Attributes

Thus I've introduced NOKPROBE_SYMBOL macro which stores the target function
addresses (not the function itself) in the _kprobe_blacklist section.

Thank you,

> 
> I.e. instead of extending it to modules we should eliminate NOKPROBE_SYMBOL() in 
> favor of marking functions as __nokprobe which is the standard syntax for marking 
> functions.
> 
> Thanks,
> 
> 	Ingo
> 


-- 
Masami HIRAMATSU
Linux Technology Research Center, System Productivity Research Dept.
Center for Technology Innovation - Systems Engineering
Hitachi, Ltd., Research & Development Group
E-mail: masami.hiramatsu.pt@hitachi.com

  reply	other threads:[~2015-07-19  3:16 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-16  7:10 [PATCH tip/master 0/3] kprobes blacklist enhancement Masami Hiramatsu
2015-07-16  7:10 ` [PATCH tip/master 1/3] kprobes: Support blacklist functions in module Masami Hiramatsu
2015-07-16 11:34   ` Rusty Russell
2015-07-17 12:10   ` Ingo Molnar
2015-07-19  3:15     ` Masami Hiramatsu [this message]
2015-07-21  7:48       ` Ingo Molnar
2015-07-21 10:19         ` Masami Hiramatsu
2015-07-16  7:10 ` [PATCH tip/master 2/3] kprobes: Use NOKPROBE_SYMBOL() in sample modules Masami Hiramatsu
2015-07-16  7:10 ` [PATCH tip/master 3/3] kprobes/x86: Use kprobe_blacklist for .kprobes.text and .entry.text Masami Hiramatsu

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=55AB166B.9040509@hitachi.com \
    --to=masami.hiramatsu.pt@hitachi.com \
    --cc=ananth@in.ibm.com \
    --cc=davem@davemloft.net \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=mingo@redhat.com \
    --cc=panand@redhat.com \
    --cc=rob@landley.net \
    --cc=rusty@rustcorp.com.au \
    --cc=tglx@linutronix.de \
    /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