xref: /linux-6.15/kernel/module/Kconfig (revision df3e764d)
173b4fc92SChristophe Leroy# SPDX-License-Identifier: GPL-2.0-only
273b4fc92SChristophe Leroymenuconfig MODULES
373b4fc92SChristophe Leroy	bool "Enable loadable module support"
473b4fc92SChristophe Leroy	modules
573b4fc92SChristophe Leroy	help
673b4fc92SChristophe Leroy	  Kernel modules are small pieces of compiled code which can
773b4fc92SChristophe Leroy	  be inserted in the running kernel, rather than being
873b4fc92SChristophe Leroy	  permanently built into the kernel.  You use the "modprobe"
973b4fc92SChristophe Leroy	  tool to add (and sometimes remove) them.  If you say Y here,
1073b4fc92SChristophe Leroy	  many parts of the kernel can be built as modules (by
1173b4fc92SChristophe Leroy	  answering M instead of Y where indicated): this is most
1273b4fc92SChristophe Leroy	  useful for infrequently used options which are not required
1373b4fc92SChristophe Leroy	  for booting.  For more information, see the man pages for
1473b4fc92SChristophe Leroy	  modprobe, lsmod, modinfo, insmod and rmmod.
1573b4fc92SChristophe Leroy
1673b4fc92SChristophe Leroy	  If you say Y here, you will need to run "make
1773b4fc92SChristophe Leroy	  modules_install" to put the modules under /lib/modules/
1873b4fc92SChristophe Leroy	  where modprobe can find them (you may need to be root to do
1973b4fc92SChristophe Leroy	  this).
2073b4fc92SChristophe Leroy
2173b4fc92SChristophe Leroy	  If unsure, say Y.
2273b4fc92SChristophe Leroy
2373b4fc92SChristophe Leroyif MODULES
2473b4fc92SChristophe Leroy
25*df3e764dSLuis Chamberlainconfig MODULE_DEBUGFS
26*df3e764dSLuis Chamberlain	bool
27*df3e764dSLuis Chamberlain
28*df3e764dSLuis Chamberlainconfig MODULE_DEBUG
29*df3e764dSLuis Chamberlain	bool "Module debugging"
30*df3e764dSLuis Chamberlain	depends on DEBUG_FS
31*df3e764dSLuis Chamberlain	help
32*df3e764dSLuis Chamberlain	  Allows you to enable / disable features which can help you debug
33*df3e764dSLuis Chamberlain	  modules. You don't need these options on production systems.
34*df3e764dSLuis Chamberlain
35*df3e764dSLuis Chamberlainif MODULE_DEBUG
36*df3e764dSLuis Chamberlain
37*df3e764dSLuis Chamberlainconfig MODULE_STATS
38*df3e764dSLuis Chamberlain	bool "Module statistics"
39*df3e764dSLuis Chamberlain	depends on DEBUG_FS
40*df3e764dSLuis Chamberlain	select MODULE_DEBUGFS
41*df3e764dSLuis Chamberlain	help
42*df3e764dSLuis Chamberlain	  This option allows you to maintain a record of module statistics.
43*df3e764dSLuis Chamberlain	  For example, size of all modules, average size, text size, a list
44*df3e764dSLuis Chamberlain	  of failed modules and the size for each of those. For failed
45*df3e764dSLuis Chamberlain	  modules we keep track of modules which failed due to either the
46*df3e764dSLuis Chamberlain	  existing module taking too long to load or that module was already
47*df3e764dSLuis Chamberlain	  loaded.
48*df3e764dSLuis Chamberlain
49*df3e764dSLuis Chamberlain	  You should enable this if you are debugging production loads
50*df3e764dSLuis Chamberlain	  and want to see if userspace or the kernel is doing stupid things
51*df3e764dSLuis Chamberlain	  with loading modules when it shouldn't or if you want to help
52*df3e764dSLuis Chamberlain	  optimize userspace / kernel space module autoloading schemes.
53*df3e764dSLuis Chamberlain	  You might want to do this because failed modules tend to use
54*df3e764dSLuis Chamberlain	  up significant amount of memory, and so you'd be doing everyone a
55*df3e764dSLuis Chamberlain	  favor in avoiding these failures proactively.
56*df3e764dSLuis Chamberlain
57*df3e764dSLuis Chamberlain	  This functionality is also useful for those experimenting with
58*df3e764dSLuis Chamberlain	  module .text ELF section optimization.
59*df3e764dSLuis Chamberlain
60*df3e764dSLuis Chamberlain	  If unsure, say N.
61*df3e764dSLuis Chamberlain
62*df3e764dSLuis Chamberlainendif # MODULE_DEBUG
63*df3e764dSLuis Chamberlain
6473b4fc92SChristophe Leroyconfig MODULE_FORCE_LOAD
6573b4fc92SChristophe Leroy	bool "Forced module loading"
6673b4fc92SChristophe Leroy	default n
6773b4fc92SChristophe Leroy	help
6873b4fc92SChristophe Leroy	  Allow loading of modules without version information (ie. modprobe
6973b4fc92SChristophe Leroy	  --force).  Forced module loading sets the 'F' (forced) taint flag and
7073b4fc92SChristophe Leroy	  is usually a really bad idea.
7173b4fc92SChristophe Leroy
7273b4fc92SChristophe Leroyconfig MODULE_UNLOAD
7373b4fc92SChristophe Leroy	bool "Module unloading"
7473b4fc92SChristophe Leroy	help
7573b4fc92SChristophe Leroy	  Without this option you will not be able to unload any
7673b4fc92SChristophe Leroy	  modules (note that some modules may not be unloadable
7773b4fc92SChristophe Leroy	  anyway), which makes your kernel smaller, faster
7873b4fc92SChristophe Leroy	  and simpler.  If unsure, say Y.
7973b4fc92SChristophe Leroy
8073b4fc92SChristophe Leroyconfig MODULE_FORCE_UNLOAD
8173b4fc92SChristophe Leroy	bool "Forced module unloading"
8273b4fc92SChristophe Leroy	depends on MODULE_UNLOAD
8373b4fc92SChristophe Leroy	help
8473b4fc92SChristophe Leroy	  This option allows you to force a module to unload, even if the
8573b4fc92SChristophe Leroy	  kernel believes it is unsafe: the kernel will remove the module
8673b4fc92SChristophe Leroy	  without waiting for anyone to stop using it (using the -f option to
8773b4fc92SChristophe Leroy	  rmmod).  This is mainly for kernel developers and desperate users.
8873b4fc92SChristophe Leroy	  If unsure, say N.
8973b4fc92SChristophe Leroy
9073b4fc92SChristophe Leroyconfig MODULE_UNLOAD_TAINT_TRACKING
9173b4fc92SChristophe Leroy	bool "Tainted module unload tracking"
9273b4fc92SChristophe Leroy	depends on MODULE_UNLOAD
93*df3e764dSLuis Chamberlain	select MODULE_DEBUGFS
9473b4fc92SChristophe Leroy	help
9573b4fc92SChristophe Leroy	  This option allows you to maintain a record of each unloaded
9673b4fc92SChristophe Leroy	  module that tainted the kernel. In addition to displaying a
9773b4fc92SChristophe Leroy	  list of linked (or loaded) modules e.g. on detection of a bad
9873b4fc92SChristophe Leroy	  page (see bad_page()), the aforementioned details are also
9973b4fc92SChristophe Leroy	  shown. If unsure, say N.
10073b4fc92SChristophe Leroy
10173b4fc92SChristophe Leroyconfig MODVERSIONS
10273b4fc92SChristophe Leroy	bool "Module versioning support"
10373b4fc92SChristophe Leroy	help
10473b4fc92SChristophe Leroy	  Usually, you have to use modules compiled with your kernel.
10573b4fc92SChristophe Leroy	  Saying Y here makes it sometimes possible to use modules
10673b4fc92SChristophe Leroy	  compiled for different kernels, by adding enough information
10773b4fc92SChristophe Leroy	  to the modules to (hopefully) spot any changes which would
10873b4fc92SChristophe Leroy	  make them incompatible with the kernel you are running.  If
10973b4fc92SChristophe Leroy	  unsure, say N.
11073b4fc92SChristophe Leroy
11173b4fc92SChristophe Leroyconfig ASM_MODVERSIONS
11273b4fc92SChristophe Leroy	bool
11373b4fc92SChristophe Leroy	default HAVE_ASM_MODVERSIONS && MODVERSIONS
11473b4fc92SChristophe Leroy	help
11573b4fc92SChristophe Leroy	  This enables module versioning for exported symbols also from
11673b4fc92SChristophe Leroy	  assembly. This can be enabled only when the target architecture
11773b4fc92SChristophe Leroy	  supports it.
11873b4fc92SChristophe Leroy
11973b4fc92SChristophe Leroyconfig MODULE_SRCVERSION_ALL
12073b4fc92SChristophe Leroy	bool "Source checksum for all modules"
12173b4fc92SChristophe Leroy	help
12273b4fc92SChristophe Leroy	  Modules which contain a MODULE_VERSION get an extra "srcversion"
12373b4fc92SChristophe Leroy	  field inserted into their modinfo section, which contains a
12473b4fc92SChristophe Leroy	  sum of the source files which made it.  This helps maintainers
12573b4fc92SChristophe Leroy	  see exactly which source was used to build a module (since
12673b4fc92SChristophe Leroy	  others sometimes change the module source without updating
12773b4fc92SChristophe Leroy	  the version).  With this option, such a "srcversion" field
12873b4fc92SChristophe Leroy	  will be created for all modules.  If unsure, say N.
12973b4fc92SChristophe Leroy
13073b4fc92SChristophe Leroyconfig MODULE_SIG
13173b4fc92SChristophe Leroy	bool "Module signature verification"
13273b4fc92SChristophe Leroy	select MODULE_SIG_FORMAT
13373b4fc92SChristophe Leroy	help
13473b4fc92SChristophe Leroy	  Check modules for valid signatures upon load: the signature
13573b4fc92SChristophe Leroy	  is simply appended to the module. For more information see
13673b4fc92SChristophe Leroy	  <file:Documentation/admin-guide/module-signing.rst>.
13773b4fc92SChristophe Leroy
13873b4fc92SChristophe Leroy	  Note that this option adds the OpenSSL development packages as a
13973b4fc92SChristophe Leroy	  kernel build dependency so that the signing tool can use its crypto
14073b4fc92SChristophe Leroy	  library.
14173b4fc92SChristophe Leroy
14273b4fc92SChristophe Leroy	  You should enable this option if you wish to use either
14373b4fc92SChristophe Leroy	  CONFIG_SECURITY_LOCKDOWN_LSM or lockdown functionality imposed via
14473b4fc92SChristophe Leroy	  another LSM - otherwise unsigned modules will be loadable regardless
14573b4fc92SChristophe Leroy	  of the lockdown policy.
14673b4fc92SChristophe Leroy
14773b4fc92SChristophe Leroy	  !!!WARNING!!!  If you enable this option, you MUST make sure that the
14873b4fc92SChristophe Leroy	  module DOES NOT get stripped after being signed.  This includes the
14973b4fc92SChristophe Leroy	  debuginfo strip done by some packagers (such as rpmbuild) and
15073b4fc92SChristophe Leroy	  inclusion into an initramfs that wants the module size reduced.
15173b4fc92SChristophe Leroy
15273b4fc92SChristophe Leroyconfig MODULE_SIG_FORCE
15373b4fc92SChristophe Leroy	bool "Require modules to be validly signed"
15473b4fc92SChristophe Leroy	depends on MODULE_SIG
15573b4fc92SChristophe Leroy	help
15673b4fc92SChristophe Leroy	  Reject unsigned modules or signed modules for which we don't have a
15773b4fc92SChristophe Leroy	  key.  Without this, such modules will simply taint the kernel.
15873b4fc92SChristophe Leroy
15973b4fc92SChristophe Leroyconfig MODULE_SIG_ALL
16073b4fc92SChristophe Leroy	bool "Automatically sign all modules"
16173b4fc92SChristophe Leroy	default y
16273b4fc92SChristophe Leroy	depends on MODULE_SIG || IMA_APPRAISE_MODSIG
16373b4fc92SChristophe Leroy	help
16473b4fc92SChristophe Leroy	  Sign all modules during make modules_install. Without this option,
16573b4fc92SChristophe Leroy	  modules must be signed manually, using the scripts/sign-file tool.
16673b4fc92SChristophe Leroy
16773b4fc92SChristophe Leroycomment "Do not forget to sign required modules with scripts/sign-file"
16873b4fc92SChristophe Leroy	depends on MODULE_SIG_FORCE && !MODULE_SIG_ALL
16973b4fc92SChristophe Leroy
17073b4fc92SChristophe Leroychoice
17173b4fc92SChristophe Leroy	prompt "Which hash algorithm should modules be signed with?"
17273b4fc92SChristophe Leroy	depends on MODULE_SIG || IMA_APPRAISE_MODSIG
17373b4fc92SChristophe Leroy	help
17473b4fc92SChristophe Leroy	  This determines which sort of hashing algorithm will be used during
17573b4fc92SChristophe Leroy	  signature generation.  This algorithm _must_ be built into the kernel
17673b4fc92SChristophe Leroy	  directly so that signature verification can take place.  It is not
17773b4fc92SChristophe Leroy	  possible to load a signed module containing the algorithm to check
17873b4fc92SChristophe Leroy	  the signature on that module.
17973b4fc92SChristophe Leroy
18073b4fc92SChristophe Leroyconfig MODULE_SIG_SHA1
18173b4fc92SChristophe Leroy	bool "Sign modules with SHA-1"
18273b4fc92SChristophe Leroy	select CRYPTO_SHA1
18373b4fc92SChristophe Leroy
18473b4fc92SChristophe Leroyconfig MODULE_SIG_SHA224
18573b4fc92SChristophe Leroy	bool "Sign modules with SHA-224"
18673b4fc92SChristophe Leroy	select CRYPTO_SHA256
18773b4fc92SChristophe Leroy
18873b4fc92SChristophe Leroyconfig MODULE_SIG_SHA256
18973b4fc92SChristophe Leroy	bool "Sign modules with SHA-256"
19073b4fc92SChristophe Leroy	select CRYPTO_SHA256
19173b4fc92SChristophe Leroy
19273b4fc92SChristophe Leroyconfig MODULE_SIG_SHA384
19373b4fc92SChristophe Leroy	bool "Sign modules with SHA-384"
19473b4fc92SChristophe Leroy	select CRYPTO_SHA512
19573b4fc92SChristophe Leroy
19673b4fc92SChristophe Leroyconfig MODULE_SIG_SHA512
19773b4fc92SChristophe Leroy	bool "Sign modules with SHA-512"
19873b4fc92SChristophe Leroy	select CRYPTO_SHA512
19973b4fc92SChristophe Leroy
20073b4fc92SChristophe Leroyendchoice
20173b4fc92SChristophe Leroy
20273b4fc92SChristophe Leroyconfig MODULE_SIG_HASH
20373b4fc92SChristophe Leroy	string
20473b4fc92SChristophe Leroy	depends on MODULE_SIG || IMA_APPRAISE_MODSIG
20573b4fc92SChristophe Leroy	default "sha1" if MODULE_SIG_SHA1
20673b4fc92SChristophe Leroy	default "sha224" if MODULE_SIG_SHA224
20773b4fc92SChristophe Leroy	default "sha256" if MODULE_SIG_SHA256
20873b4fc92SChristophe Leroy	default "sha384" if MODULE_SIG_SHA384
20973b4fc92SChristophe Leroy	default "sha512" if MODULE_SIG_SHA512
21073b4fc92SChristophe Leroy
21173b4fc92SChristophe Leroychoice
21273b4fc92SChristophe Leroy	prompt "Module compression mode"
21373b4fc92SChristophe Leroy	help
21473b4fc92SChristophe Leroy	  This option allows you to choose the algorithm which will be used to
21573b4fc92SChristophe Leroy	  compress modules when 'make modules_install' is run. (or, you can
21673b4fc92SChristophe Leroy	  choose to not compress modules at all.)
21773b4fc92SChristophe Leroy
21873b4fc92SChristophe Leroy	  External modules will also be compressed in the same way during the
21973b4fc92SChristophe Leroy	  installation.
22073b4fc92SChristophe Leroy
22173b4fc92SChristophe Leroy	  For modules inside an initrd or initramfs, it's more efficient to
22273b4fc92SChristophe Leroy	  compress the whole initrd or initramfs instead.
22373b4fc92SChristophe Leroy
22473b4fc92SChristophe Leroy	  This is fully compatible with signed modules.
22573b4fc92SChristophe Leroy
22673b4fc92SChristophe Leroy	  Please note that the tool used to load modules needs to support the
22773b4fc92SChristophe Leroy	  corresponding algorithm. module-init-tools MAY support gzip, and kmod
22873b4fc92SChristophe Leroy	  MAY support gzip, xz and zstd.
22973b4fc92SChristophe Leroy
23073b4fc92SChristophe Leroy	  Your build system needs to provide the appropriate compression tool
23173b4fc92SChristophe Leroy	  to compress the modules.
23273b4fc92SChristophe Leroy
23373b4fc92SChristophe Leroy	  If in doubt, select 'None'.
23473b4fc92SChristophe Leroy
23573b4fc92SChristophe Leroyconfig MODULE_COMPRESS_NONE
23673b4fc92SChristophe Leroy	bool "None"
23773b4fc92SChristophe Leroy	help
23873b4fc92SChristophe Leroy	  Do not compress modules. The installed modules are suffixed
23973b4fc92SChristophe Leroy	  with .ko.
24073b4fc92SChristophe Leroy
24173b4fc92SChristophe Leroyconfig MODULE_COMPRESS_GZIP
24273b4fc92SChristophe Leroy	bool "GZIP"
24373b4fc92SChristophe Leroy	help
24473b4fc92SChristophe Leroy	  Compress modules with GZIP. The installed modules are suffixed
24573b4fc92SChristophe Leroy	  with .ko.gz.
24673b4fc92SChristophe Leroy
24773b4fc92SChristophe Leroyconfig MODULE_COMPRESS_XZ
24873b4fc92SChristophe Leroy	bool "XZ"
24973b4fc92SChristophe Leroy	help
25073b4fc92SChristophe Leroy	  Compress modules with XZ. The installed modules are suffixed
25173b4fc92SChristophe Leroy	  with .ko.xz.
25273b4fc92SChristophe Leroy
25373b4fc92SChristophe Leroyconfig MODULE_COMPRESS_ZSTD
25473b4fc92SChristophe Leroy	bool "ZSTD"
25573b4fc92SChristophe Leroy	help
25673b4fc92SChristophe Leroy	  Compress modules with ZSTD. The installed modules are suffixed
25773b4fc92SChristophe Leroy	  with .ko.zst.
25873b4fc92SChristophe Leroy
25973b4fc92SChristophe Leroyendchoice
26073b4fc92SChristophe Leroy
26173b4fc92SChristophe Leroyconfig MODULE_DECOMPRESS
26273b4fc92SChristophe Leroy	bool "Support in-kernel module decompression"
263169a58adSStephen Boyd	depends on MODULE_COMPRESS_GZIP || MODULE_COMPRESS_XZ || MODULE_COMPRESS_ZSTD
26473b4fc92SChristophe Leroy	select ZLIB_INFLATE if MODULE_COMPRESS_GZIP
26573b4fc92SChristophe Leroy	select XZ_DEC if MODULE_COMPRESS_XZ
266169a58adSStephen Boyd	select ZSTD_DECOMPRESS if MODULE_COMPRESS_ZSTD
26773b4fc92SChristophe Leroy	help
26873b4fc92SChristophe Leroy
26973b4fc92SChristophe Leroy	  Support for decompressing kernel modules by the kernel itself
27073b4fc92SChristophe Leroy	  instead of relying on userspace to perform this task. Useful when
27173b4fc92SChristophe Leroy	  load pinning security policy is enabled.
27273b4fc92SChristophe Leroy
27373b4fc92SChristophe Leroy	  If unsure, say N.
27473b4fc92SChristophe Leroy
27573b4fc92SChristophe Leroyconfig MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS
27673b4fc92SChristophe Leroy	bool "Allow loading of modules with missing namespace imports"
27773b4fc92SChristophe Leroy	help
27873b4fc92SChristophe Leroy	  Symbols exported with EXPORT_SYMBOL_NS*() are considered exported in
27973b4fc92SChristophe Leroy	  a namespace. A module that makes use of a symbol exported with such a
28073b4fc92SChristophe Leroy	  namespace is required to import the namespace via MODULE_IMPORT_NS().
28173b4fc92SChristophe Leroy	  There is no technical reason to enforce correct namespace imports,
28273b4fc92SChristophe Leroy	  but it creates consistency between symbols defining namespaces and
28373b4fc92SChristophe Leroy	  users importing namespaces they make use of. This option relaxes this
28473b4fc92SChristophe Leroy	  requirement and lifts the enforcement when loading a module.
28573b4fc92SChristophe Leroy
28673b4fc92SChristophe Leroy	  If unsure, say N.
28773b4fc92SChristophe Leroy
28873b4fc92SChristophe Leroyconfig MODPROBE_PATH
28973b4fc92SChristophe Leroy	string "Path to modprobe binary"
29073b4fc92SChristophe Leroy	default "/sbin/modprobe"
29173b4fc92SChristophe Leroy	help
29273b4fc92SChristophe Leroy	  When kernel code requests a module, it does so by calling
29373b4fc92SChristophe Leroy	  the "modprobe" userspace utility. This option allows you to
29473b4fc92SChristophe Leroy	  set the path where that binary is found. This can be changed
29573b4fc92SChristophe Leroy	  at runtime via the sysctl file
29673b4fc92SChristophe Leroy	  /proc/sys/kernel/modprobe. Setting this to the empty string
29773b4fc92SChristophe Leroy	  removes the kernel's ability to request modules (but
29873b4fc92SChristophe Leroy	  userspace can still load modules explicitly).
29973b4fc92SChristophe Leroy
30073b4fc92SChristophe Leroyconfig TRIM_UNUSED_KSYMS
30173b4fc92SChristophe Leroy	bool "Trim unused exported kernel symbols" if EXPERT
30273b4fc92SChristophe Leroy	depends on !COMPILE_TEST
30373b4fc92SChristophe Leroy	help
30473b4fc92SChristophe Leroy	  The kernel and some modules make many symbols available for
30573b4fc92SChristophe Leroy	  other modules to use via EXPORT_SYMBOL() and variants. Depending
30673b4fc92SChristophe Leroy	  on the set of modules being selected in your kernel configuration,
30773b4fc92SChristophe Leroy	  many of those exported symbols might never be used.
30873b4fc92SChristophe Leroy
30973b4fc92SChristophe Leroy	  This option allows for unused exported symbols to be dropped from
31073b4fc92SChristophe Leroy	  the build. In turn, this provides the compiler more opportunities
31173b4fc92SChristophe Leroy	  (especially when using LTO) for optimizing the code and reducing
31273b4fc92SChristophe Leroy	  binary size.  This might have some security advantages as well.
31373b4fc92SChristophe Leroy
31473b4fc92SChristophe Leroy	  If unsure, or if you need to build out-of-tree modules, say N.
31573b4fc92SChristophe Leroy
31673b4fc92SChristophe Leroyconfig UNUSED_KSYMS_WHITELIST
31773b4fc92SChristophe Leroy	string "Whitelist of symbols to keep in ksymtab"
31873b4fc92SChristophe Leroy	depends on TRIM_UNUSED_KSYMS
31973b4fc92SChristophe Leroy	help
32073b4fc92SChristophe Leroy	  By default, all unused exported symbols will be un-exported from the
32173b4fc92SChristophe Leroy	  build when TRIM_UNUSED_KSYMS is selected.
32273b4fc92SChristophe Leroy
32373b4fc92SChristophe Leroy	  UNUSED_KSYMS_WHITELIST allows to whitelist symbols that must be kept
32473b4fc92SChristophe Leroy	  exported at all times, even in absence of in-tree users. The value to
32573b4fc92SChristophe Leroy	  set here is the path to a text file containing the list of symbols,
32673b4fc92SChristophe Leroy	  one per line. The path can be absolute, or relative to the kernel
32773b4fc92SChristophe Leroy	  source tree.
32873b4fc92SChristophe Leroy
32973b4fc92SChristophe Leroyconfig MODULES_TREE_LOOKUP
33073b4fc92SChristophe Leroy	def_bool y
33173b4fc92SChristophe Leroy	depends on PERF_EVENTS || TRACING || CFI_CLANG
33273b4fc92SChristophe Leroy
33373b4fc92SChristophe Leroyendif # MODULES
334