[LTP] [PATCH v3 2/4] tst_kconfig: load and unload kernel modules for CONFIG_*=m

Li Wang li.wang@linux.dev
Wed Oct 14 05:36:31 CEST 2026


On Mon, Oct 12, 2026 at 04:09:29PM +0000, Andrea Cervesato wrote:
> Hi Li,
> 
> > +static const char *module_name_for_config(const char *cfg)
> > +{
> > +	size_t i;
> > +
> > +	for (i = 0; config_module_maps[i].config; i++) {
> > +		if (!strcmp(config_module_maps[i].config, cfg))
> > +			return config_module_maps[i].module_name;
> > +	}
> > +
> > +	return NULL;
> > +}
> 
> This is used only once, we don't need to define a new function.
> We can leave it inside kconfig_module_record().
+1

> > +
> > +static void kconfig_module_record(const char *cfg)
> > +{
> > +	unsigned int i;
> > +	const char *mod = module_name_for_config(cfg);
> > +
> > +	if (!mod)
> > +		return;
> > +
> > +	if (tst_module_is_loaded(mod))
> > +		return;
> > +
> > +	for (i = 0; i < loaded_module_count; i++) {
> > +		if (!strcmp(loaded_modules[i], mod))
> > +			return;
> > +	}
> > +
> > +	if (loaded_module_count < MAX_LOADED_MODULES)
> > +		loaded_modules[loaded_module_count++] = mod;
> > +}
> > +
> >  static inline int kconfig_parse_line(const char *line,
> >                                       struct tst_kconfig_var *vars,
> >                                       unsigned int vars_len)
> > @@ -268,6 +307,8 @@ out:
> >  				vars[i].choice = 'm';
> >  				kconfig_runtime_check(&vars[i]);
> >  				kconfig_module_check(&vars[i]);
> > +				if (vars[i].choice == 'm')
> 
> This is better to have it inside kconfig_module_record() at the
> very beginning as a gate.

Good point, thanks!

-- 
Regards,
Li Wang


More information about the ltp mailing list