mirror of
https://github.com/torvalds/linux.git
synced 2024-12-28 13:51:44 +00:00
module: add config option MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS
If MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is enabled (default=n), the requirement for modules to import all namespaces that are used by the module is relaxed. Enabling this option effectively allows (invalid) modules to be loaded while only a warning is emitted. Disabling this option keeps the enforcement at module loading time and loading is denied if the module's imports are not satisfactory. Reviewed-by: Martijn Coenen <maco@android.com> Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Matthias Maennich <maennich@google.com> Signed-off-by: Jessica Yu <jeyu@kernel.org>
This commit is contained in:
parent
cb9b55d21f
commit
3d52ec5e5d
13
init/Kconfig
13
init/Kconfig
@ -2119,6 +2119,19 @@ config MODULE_COMPRESS_XZ
|
||||
|
||||
endchoice
|
||||
|
||||
config MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS
|
||||
bool "Allow loading of modules with missing namespace imports"
|
||||
help
|
||||
Symbols exported with EXPORT_SYMBOL_NS*() are considered exported in
|
||||
a namespace. A module that makes use of a symbol exported with such a
|
||||
namespace is required to import the namespace via MODULE_IMPORT_NS().
|
||||
There is no technical reason to enforce correct namespace imports,
|
||||
but it creates consistency between symbols defining namespaces and
|
||||
users importing namespaces they make use of. This option relaxes this
|
||||
requirement and lifts the enforcement when loading a module.
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
config TRIM_UNUSED_KSYMS
|
||||
bool "Trim unused exported kernel symbols"
|
||||
depends on MODULES && !UNUSED_SYMBOLS
|
||||
|
@ -1408,9 +1408,16 @@ static int verify_namespace_is_imported(const struct load_info *info,
|
||||
imported_namespace = get_next_modinfo(
|
||||
info, "import_ns", imported_namespace);
|
||||
}
|
||||
pr_err("%s: module uses symbol (%s) from namespace %s, but does not import it.\n",
|
||||
mod->name, kernel_symbol_name(sym), namespace);
|
||||
#ifdef CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS
|
||||
pr_warn(
|
||||
#else
|
||||
pr_err(
|
||||
#endif
|
||||
"%s: module uses symbol (%s) from namespace %s, but does not import it.\n",
|
||||
mod->name, kernel_symbol_name(sym), namespace);
|
||||
#ifndef CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS
|
||||
return -EINVAL;
|
||||
#endif
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user