On Fri, Mar 22, 2024 at 12:27 PM Sasha Levin <sashal@xxxxxxxxxx> wrote: > > This is a note to let you know that I've just added the patch titled > > module: Add support for default value for module async_probe > > to the 5.15-stable tree which can be found at: > http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary > > The filename of the patch is: > module-add-support-for-default-value-for-module-asyn.patch > and it can be found in the queue-5.15 subdirectory. Is there a reason this is getting pulled into 5.15 after such a long time? Just curious. -Saravana > > If you, or anyone else, feels it should not be added to the stable tree, > please let <stable@xxxxxxxxxxxxxxx> know about it. > > > > commit 5e71cd2829f5ca192a3a7a0f010406489823bf45 > Author: Saravana Kannan <saravanak@xxxxxxxxxx> > Date: Fri Jun 3 18:01:00 2022 -0700 > > module: Add support for default value for module async_probe > > [ Upstream commit ae39e9ed964f8e450d0de410b5a757e19581dfc5 ] > > Add a module.async_probe kernel command line option that allows enabling > async probing for all modules. When this command line option is used, > there might still be some modules for which we want to explicitly force > synchronous probing, so extend <modulename>.async_probe to take an > optional bool input so that async probing can be disabled for a specific > module. > > Signed-off-by: Saravana Kannan <saravanak@xxxxxxxxxx> > Reviewed-by: Aaron Tomlin <atomlin@xxxxxxxxxx> > Signed-off-by: Luis Chamberlain <mcgrof@xxxxxxxxxx> > Stable-dep-of: 8f8cd6c0a43e ("modules: wait do_free_init correctly") > Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx> > > diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt > index 34b093e7f8910..c4c7273419bda 100644 > --- a/Documentation/admin-guide/kernel-parameters.txt > +++ b/Documentation/admin-guide/kernel-parameters.txt > @@ -1084,8 +1084,12 @@ > nopku [X86] Disable Memory Protection Keys CPU feature found > in some Intel CPUs. > > - <module>.async_probe [KNL] > - Enable asynchronous probe on this module. > + <module>.async_probe[=<bool>] [KNL] > + If no <bool> value is specified or if the value > + specified is not a valid <bool>, enable asynchronous > + probe on this module. Otherwise, enable/disable > + asynchronous probe on this module as indicated by the > + <bool> value. See also: module.async_probe > > early_ioremap_debug [KNL] > Enable debug messages in early_ioremap support. This > @@ -3137,6 +3141,15 @@ > For details see: > Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst > > + module.async_probe=<bool> > + [KNL] When set to true, modules will use async probing > + by default. To enable/disable async probing for a > + specific module, use the module specific control that > + is documented under <module>.async_probe. When both > + module.async_probe and <module>.async_probe are > + specified, <module>.async_probe takes precedence for > + the specific module. > + > module.sig_enforce > [KNL] When CONFIG_MODULE_SIG is set, this means that > modules without (valid) signatures will fail to load. > diff --git a/kernel/module.c b/kernel/module.c > index ba9f2bb57889c..d8d677f01adb5 100644 > --- a/kernel/module.c > +++ b/kernel/module.c > @@ -3713,6 +3713,12 @@ static void do_free_init(struct work_struct *w) > } > } > > +#undef MODULE_PARAM_PREFIX > +#define MODULE_PARAM_PREFIX "module." > +/* Default value for module->async_probe_requested */ > +static bool async_probe; > +module_param(async_probe, bool, 0644); > + > /* > * This is where the real work happens. > * > @@ -3943,7 +3949,8 @@ static int unknown_module_param_cb(char *param, char *val, const char *modname, > int ret; > > if (strcmp(param, "async_probe") == 0) { > - mod->async_probe_requested = true; > + if (strtobool(val, &mod->async_probe_requested)) > + mod->async_probe_requested = true; > return 0; > } > > @@ -4110,6 +4117,8 @@ static int load_module(struct load_info *info, const char __user *uargs, > if (err) > goto bug_cleanup; > > + mod->async_probe_requested = async_probe; > + > /* 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,