From: Josh Poimboeuf <jpoimboe@redhat.com>
To: Jessica Yu <jeyu@redhat.com>
Cc: Seth Jennings <sjenning@redhat.com>,
Jiri Kosina <jikos@kernel.org>, Vojtech Pavlik <vojtech@suse.com>,
Miroslav Benes <mbenes@suse.cz>, Petr Mladek <pmladek@suse.com>,
Rusty Russell <rusty@rustcorp.com.au>,
Steven Rostedt <rostedt@goodmis.org>,
Ingo Molnar <mingo@redhat.com>,
live-patching@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 1/4] modules: split part of complete_formation() into prepare_coming_module()
Date: Tue, 9 Feb 2016 09:41:36 -0600 [thread overview]
Message-ID: <20160209154136.GA10270@treble.redhat.com> (raw)
In-Reply-To: <1454993424-31031-2-git-send-email-jeyu@redhat.com>
On Mon, Feb 08, 2016 at 11:50:21PM -0500, Jessica Yu wrote:
> Put all actions that are performed after module->state is set to
> MODULE_STATE_COMING in complete_formation() into a separate function
> prepare_coming_module(). This prepares for the removal of ftrace and
> livepatch module coming notifiers and instead the corresponding work will
> be done in prepare_coming_module(). This split will also allow for
> appropriate error handling.
>
> Signed-off-by: Jessica Yu <jeyu@redhat.com>
Reviewed-by: Josh Poimboeuf <jpoimboe@redhat.com>
> ---
> kernel/module.c | 25 ++++++++++++++++++-------
> 1 file changed, 18 insertions(+), 7 deletions(-)
>
> diff --git a/kernel/module.c b/kernel/module.c
> index 9537da3..a174335 100644
> --- a/kernel/module.c
> +++ b/kernel/module.c
> @@ -3366,6 +3366,14 @@ out_unlocked:
> return err;
> }
>
> +static int prepare_coming_module(struct module *mod)
> +{
> +
> + blocking_notifier_call_chain(&module_notify_list,
> + MODULE_STATE_COMING, mod);
> + return 0;
> +}
> +
> static int complete_formation(struct module *mod, struct load_info *info)
> {
> int err;
> @@ -3389,8 +3397,6 @@ static int complete_formation(struct module *mod, struct load_info *info)
> mod->state = MODULE_STATE_COMING;
> mutex_unlock(&module_mutex);
>
> - blocking_notifier_call_chain(&module_notify_list,
> - MODULE_STATE_COMING, mod);
> return 0;
>
> out:
> @@ -3512,13 +3518,17 @@ static int load_module(struct load_info *info, const char __user *uargs,
> if (err)
> goto ddebug_cleanup;
>
> + err = prepare_coming_module(mod);
> + if (err)
> + goto bug_cleanup;
> +
> /* Module is ready to execute: parsing args may do that. */
> after_dashes = parse_args(mod->name, mod->args, mod->kp, mod->num_kp,
> -32768, 32767, mod,
> unknown_module_param_cb);
> if (IS_ERR(after_dashes)) {
> err = PTR_ERR(after_dashes);
> - goto bug_cleanup;
> + goto coming_cleanup;
> } else if (after_dashes) {
> pr_warn("%s: parameters '%s' after `--' ignored\n",
> mod->name, after_dashes);
> @@ -3527,7 +3537,7 @@ static int load_module(struct load_info *info, const char __user *uargs,
> /* Link in to syfs. */
> err = mod_sysfs_setup(mod, info, mod->kp, mod->num_kp);
> if (err < 0)
> - goto bug_cleanup;
> + goto coming_cleanup;
>
> /* Get rid of temporary copy. */
> free_copy(info);
> @@ -3537,15 +3547,16 @@ static int load_module(struct load_info *info, const char __user *uargs,
>
> return do_init_module(mod);
>
> + coming_cleanup:
> + blocking_notifier_call_chain(&module_notify_list,
> + MODULE_STATE_GOING, mod);
> +
> bug_cleanup:
> /* module_bug_cleanup needs module_mutex protection */
> mutex_lock(&module_mutex);
> module_bug_cleanup(mod);
> mutex_unlock(&module_mutex);
>
> - blocking_notifier_call_chain(&module_notify_list,
> - MODULE_STATE_GOING, mod);
> -
> /* we can't deallocate the module until we clear memory protection */
> module_disable_ro(mod);
> module_disable_nx(mod);
> --
> 2.4.3
>
--
Josh
next prev parent reply other threads:[~2016-02-09 15:41 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-09 4:50 [PATCH v4 0/4] Fix ordering of ftrace/livepatch calls on module load and unload Jessica Yu
2016-02-09 4:50 ` [PATCH v4 1/4] modules: split part of complete_formation() into prepare_coming_module() Jessica Yu
2016-02-09 15:41 ` Josh Poimboeuf [this message]
2016-02-10 10:13 ` Miroslav Benes
2016-02-10 12:16 ` Petr Mladek
2016-02-09 4:50 ` [PATCH v4 2/4] modules: set mod->state to MODULE_STATE_GOING before going notifiers are called Jessica Yu
2016-02-09 15:45 ` Josh Poimboeuf
2016-02-10 10:20 ` Miroslav Benes
2016-02-10 12:37 ` Petr Mladek
2016-02-09 4:50 ` [PATCH v4 3/4] ftrace/module: remove ftrace module notifier Jessica Yu
2016-02-09 15:45 ` Josh Poimboeuf
2016-02-10 10:27 ` Miroslav Benes
2016-02-09 4:50 ` [PATCH v4 4/4] livepatch/module: remove livepatch " Jessica Yu
2016-02-09 15:45 ` Josh Poimboeuf
2016-02-09 23:43 ` Rusty Russell
2016-02-10 10:18 ` Jiri Kosina
2016-02-14 22:59 ` Jiri Kosina
2016-02-15 23:27 ` Josh Poimboeuf
2016-02-15 23:42 ` Jiri Kosina
2016-02-16 0:48 ` Jessica Yu
2016-02-16 8:41 ` Miroslav Benes
2016-02-16 19:51 ` Jessica Yu
2016-03-29 2:03 ` [PATCH v4 4/4] " Steven Rostedt
2016-02-29 0:30 ` Rusty Russell
2016-03-01 3:00 ` Jessica Yu
2016-02-10 10:34 ` [PATCH v4 4/4] " Miroslav Benes
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=20160209154136.GA10270@treble.redhat.com \
--to=jpoimboe@redhat.com \
--cc=jeyu@redhat.com \
--cc=jikos@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=live-patching@vger.kernel.org \
--cc=mbenes@suse.cz \
--cc=mingo@redhat.com \
--cc=pmladek@suse.com \
--cc=rostedt@goodmis.org \
--cc=rusty@rustcorp.com.au \
--cc=sjenning@redhat.com \
--cc=vojtech@suse.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 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.