2015-08-31 00:06:45

by Frank Ch. Eigler

[permalink] [raw]
Subject: timing of module MODULE_STATE_COMING notifier

Hi, Rusty -

We just [1] came across your patch [2] from last year (merged into
3.17), wherein the RO/NX mapping settings for module sections were
moved to an earlier point in the module-loading sequence.

That patch also moved the MODULE_STATE_COMING notifier call to
complete_formation(), which is relatively early to its former
do_init_module() call site. It now precedes the parse_args(),
mod_sysfs_setup(), and trace_module_load() steps.

Was the latter part of the change intended & necessary? It is
negatively impacting systemtap, which was relying on
MODULE_STATE_COMING being called from a fairly complete module state -
just before the actual initializer function call.

[1] https://sourceware.org/bugzilla/show_bug.cgi?id=18889

[2] commit 4982223e51e8ea9d09bb33c8323b5ec1877b2b51
Author: Rusty Russell <[email protected]>
Date: Wed May 14 10:54:19 2014 +0930


- FChE


2015-08-31 01:36:43

by Rusty Russell

[permalink] [raw]
Subject: Re: timing of module MODULE_STATE_COMING notifier

"Frank Ch. Eigler" <[email protected]> writes:
> Hi, Rusty -
>
> We just [1] came across your patch [2] from last year (merged into
> 3.17), wherein the RO/NX mapping settings for module sections were
> moved to an earlier point in the module-loading sequence.
>
> That patch also moved the MODULE_STATE_COMING notifier call to
> complete_formation(), which is relatively early to its former
> do_init_module() call site. It now precedes the parse_args(),
> mod_sysfs_setup(), and trace_module_load() steps.

Yes, parse_args() can enter the module, so you really want it before
then.

> Was the latter part of the change intended & necessary? It is
> negatively impacting systemtap, which was relying on
> MODULE_STATE_COMING being called from a fairly complete module state -
> just before the actual initializer function call.

Notifiers suck for stuff like this :(

Module state has many steps, so my preference has been to open-code
explicit hooks. This would seem to reinforce that preference...

Thanks,
Rusty.

2015-08-31 12:53:28

by Frank Ch. Eigler

[permalink] [raw]
Subject: Re: timing of module MODULE_STATE_COMING notifier

Hi, Rusty -

Thanks for your response!

> [...]
> > That patch also moved the MODULE_STATE_COMING notifier call to
> > complete_formation(), which is relatively early to its former
> > do_init_module() call site. It now precedes the parse_args(),
> > mod_sysfs_setup(), and trace_module_load() steps.
>
> Yes, parse_args() can enter the module, so you really want it before
> then.

Understood. (Perhaps mod_sysfs_setup() could sneak in ahead.)


> > Was the latter part of the change intended & necessary? It is
> > negatively impacting systemtap, which was relying on
> > MODULE_STATE_COMING being called from a fairly complete module
> > state - just before the actual initializer function call.

> Notifiers suck for stuff like this :( Module state has many steps,
> so my preference has been to open-code explicit hooks. [...]

You mean something like the trace_module_load()? (We will probably
experiment with hooking into that tracepoint instead of the notifier.)
A more hard-coded one with an in-kernel callee probably wouldn't help
module-resident clients like us.


- FChE

2015-08-31 20:40:19

by Frank Ch. Eigler

[permalink] [raw]
Subject: Re: timing of module MODULE_STATE_COMING notifier

Hi, Rusty -


I wrote:

> [...]
> > Notifiers suck for stuff like this :( Module state has many steps,
> > so my preference has been to open-code explicit hooks. [...]
>
> You mean something like the trace_module_load()? (We will probably
> experiment with hooking into that tracepoint instead of the notifier.)
> [...]

It turns out this works OK, except for EXPORT_TRACEPOINT_SYMBOL_GPL.
Could we get a set of EXPORT_TRACEPOINT_SYMBOL_GPL's for the
trace/events/module.h tracepoints (at least module_load and
module_free)?


- FChE