From: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Takao Indoh <indou.takao@jp.fujitsu.com>,
rusty@rustcorp.com.au, fweisbec@gmail.com, mingo@redhat.com,
ananth@in.ibm.com, anil.s.keshavamurthy@intel.com,
davem@davemloft.net, linux-kernel@vger.kernel.org
Subject: Re: ftrace/kprobes: Warning when insmod two modules
Date: Wed, 23 Apr 2014 11:37:47 +0900 [thread overview]
Message-ID: <5357277B.10208@hitachi.com> (raw)
In-Reply-To: <20140422215637.6920fb4a@gandalf.local.home>
(2014/04/23 10:56), Steven Rostedt wrote:
> On Wed, 23 Apr 2014 10:26:00 +0900
> Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> wrote:
>
>
>> Agreed. That should be done in a protected (critical) region,
>> and the region must be protected by correct lock. It seems that
>> the ftrace_lock is not a correct one.
>
> The setting of RO to RW done by ftrace before doing the normal
> modification is under the ftrace_lock mutex. Why wouldn't that be the
> correct lock?
Hmm, Ok. I checked that currently ftrace is the only user of
set_all_modules_text_rw(), so until another user appears,
ftrace_lock mutex can work. (and also, we need a comment
on the top of such functions, about by what it is protected. )
> The issue today is with the loading of a module and ftrace
> expecting its code to be RW. Here's the current race:
>
>
> CPU 1 CPU 2
> ----- -----
> load_module()
> module->state = MODULE_STATE_COMING
>
> register_ftrace_function()
> mutex_lock(&ftrace_lock);
> ftrace_startup()
> update_ftrace_function();
> ftrace_arch_code_modify_prepare()
> set_all_module_text_rw();
> <enables-ftrace>
> ftrace_arch_code_modify_post_process()
> set_all_module_text_ro();
>
> [ here all module text is set to RO,
> including the module that is
> loading!! ]
>
> blocking_notifier_call_chain(MODULE_STATE_COMING);
> ftrace_init_module()
>
>
> [ tries to modify code, but it's RO, and fails! ]
>
> One solution is to add a way to set a single module text to ro and rw,
> and then we can encapsulate ftrace_init_module() under ftrace_lock
> mutex and have the ftrace_init_module() set the text to RW and then
> back to RO, and this will keep ftrace from having issues with the
> loaded module.
It sounds nicer solution, less side-effect.
> Now, if text poke does something similar, we need to make another mutex
> that covers modifying text. Don't we have one already?
We have the text_mutex already :).
> The worry I have here, and why I still prefer the simple split state of
> MODULE_STATE_COMING, is that once you add another mutex, we now have to
> fight mutex ordering. Not to mention where else things might do this :-p
I see, however, we should take care of it, at least comment level.
Thank you,
--
Masami HIRAMATSU
Software Platform Research Dept. Linux Technology Research Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: masami.hiramatsu.pt@hitachi.com
next prev parent reply other threads:[~2014-04-23 2:37 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-24 5:10 ftrace/kprobes: Warning when insmod two modules Takao Indoh
2014-03-24 11:26 ` Masami Hiramatsu
2014-03-24 14:27 ` Steven Rostedt
2014-03-24 14:59 ` Steven Rostedt
2014-03-25 5:54 ` Takao Indoh
2014-04-22 3:51 ` Rusty Russell
2014-04-22 5:29 ` Takao Indoh
2014-04-22 7:28 ` Masami Hiramatsu
2014-04-22 8:35 ` Takao Indoh
2014-04-23 1:26 ` Masami Hiramatsu
2014-04-23 1:56 ` Steven Rostedt
2014-04-23 2:37 ` Masami Hiramatsu [this message]
2014-04-24 6:58 ` Takao Indoh
2014-04-24 12:49 ` Steven Rostedt
2014-04-22 13:41 ` Steven Rostedt
2014-04-24 7:38 ` Rusty Russell
2014-04-24 12:21 ` Steven Rostedt
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=5357277B.10208@hitachi.com \
--to=masami.hiramatsu.pt@hitachi.com \
--cc=ananth@in.ibm.com \
--cc=anil.s.keshavamurthy@intel.com \
--cc=davem@davemloft.net \
--cc=fweisbec@gmail.com \
--cc=indou.takao@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=rostedt@goodmis.org \
--cc=rusty@rustcorp.com.au \
/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.