If you know that your kernel modules will only ever be loaded by a newer kernel, you can disable BASIC_MODVERSIONS to save space. This also allows easy creation of test modules to see how tooling will respond to modules that only have the new format.
Unified · Split
| @@ -217,6 +217,21 @@ config EXTENDED_MODVERSIONS · 216 unmodified lines | ||
| 217 | 217 | The most likely reason you would enable this is to enable Rust |
| 218 | 218 | support. If unsure, say N. |
| 219 | 219 | |
| 220 | +config BASIC_MODVERSIONS | |
| 221 | + bool "Basic Module Versioning Support" | |
| 222 | + depends on MODVERSIONS | |
| 223 | + default y | |
| 224 | + help | |
| 225 | + This enables basic MODVERSIONS support, allowing older tools or | |
| 226 | + kernels to potentially load modules. | |
| 227 | + | |
| 228 | + Disabling this may cause older `modprobe` or `kmod` to be unable | |
| 229 | + to read MODVERSIONS information from built modules. With this | |
| 230 | + disabled, older kernels may treat this module as unversioned. | |
| 231 | + | |
| 232 | + This is enabled by default when MODVERSIONS are enabled. | |
| 233 | + If unsure, say Y. | |
| 234 | + | |
| 220 | 235 | config MODULE_SRCVERSION_ALL |
| 221 | 236 | bool "Source checksum for all modules" |
| 222 | 237 | help |
| @@ -43,6 +43,7 @@ MODPOST = $(objtree)/scripts/mod/modpost · 42 unmodified lines | ||
| 43 | 43 | modpost-args = \ |
| 44 | 44 | $(if $(CONFIG_MODULES),-M) \ |
| 45 | 45 | $(if $(CONFIG_MODVERSIONS),-m) \ |
| 46 | + $(if $(CONFIG_BASIC_MODVERSIONS),-b) \ | |
| 46 | 47 | $(if $(CONFIG_EXTENDED_MODVERSIONS),-x) \ |
| 47 | 48 | $(if $(CONFIG_MODULE_SRCVERSION_ALL),-a) \ |
| 48 | 49 | $(if $(CONFIG_SECTION_MISMATCH_WARN_ONLY),,-E) \ |
| @@ -33,6 +33,8 @@ static bool module_enabled; · 32 unmodified lines | ||
| 33 | 33 | static bool modversions; |
| 34 | 34 | /* Is CONFIG_MODULE_SRCVERSION_ALL set? */ |
| 35 | 35 | static bool all_versions; |
| 36 | +/* Is CONFIG_BASIC_MODVERSIONS set? */ | |
| 37 | +static bool basic_modversions; | |
| 36 | 38 | /* Is CONFIG_EXTENDED_MODVERSIONS set? */ |
| 37 | 39 | static bool extended_modversions; |
| 38 | 40 | /* If we are modposting external module set to 1 */ |
| @@ -1857,7 +1859,7 @@ static void add_versions(struct buffer *b, struct module *mod) · 1818 unmodified lines | ||
| 1857 | 1859 | { |
| 1858 | 1860 | struct symbol *s; |
| 1859 | 1861 | |
| 1860 | − if (!modversions) | |
| 1862 | + if (!basic_modversions) | |
| 1861 | 1863 | return; |
| 1862 | 1864 | |
| 1863 | 1865 | buf_printf(b, "\n"); |
| @@ -2177,7 +2179,7 @@ int main(int argc, char **argv) · 313 unmodified lines | ||
| 2177 | 2179 | LIST_HEAD(dump_lists); |
| 2178 | 2180 | struct dump_list *dl, *dl2; |
| 2179 | 2181 | |
| 2180 | − while ((opt = getopt(argc, argv, "ei:MmnT:to:au:WwENd:x")) != -1) { | |
| 2182 | + while ((opt = getopt(argc, argv, "ei:MmnT:to:au:WwENd:xb")) != -1) { | |
| 2181 | 2183 | switch (opt) { |
| 2182 | 2184 | case 'e': |
| 2183 | 2185 | external_module = true; |
| @@ -2226,6 +2228,9 @@ int main(int argc, char **argv) · 42 unmodified lines | ||
| 2226 | 2228 | case 'd': |
| 2227 | 2229 | missing_namespace_deps = optarg; |
| 2228 | 2230 | break; |
| 2231 | + case 'b': | |
| 2232 | + basic_modversions = true; | |
| 2233 | + break; | |
| 2229 | 2234 | case 'x': |
| 2230 | 2235 | extended_modversions = true; |
| 2231 | 2236 | break; |