= Linux kernel module support = This is an informal wiki to keep tabs on Linux kernel module support ongoing R&D and outstanding things. <> = Previous pull requests = This contains the list of changes sent to Linus. Although each pull request has its own documented set of changes we list a few highlights for each half of each year below. You can inspect these yourself using `git log --merges --grep="Pull module"`. == 2025 == === 2025-01 - 2025-06 === Sebastian Andrzej Siewior cleaned up the module code to use RCU instead of RCU-sched (v6.15-rc1). Several important module changes were merged through the kbuild tree: Matthew Maurer added support for extended modversions, allowing imported symbol names to be longer than `64 - sizeof(unsigned long)` bytes. Sami Tolvanen implemented a new tool called gendwarfksyms to calculate CRCs of exported symbols from type information present in DWARF data, as opposed to genksyms which parses pre-processed source files. Both changes were implemented to enable modversions for Rust (v6.14-rc1). Peter Zijlstra added support for module-specific symbol namespaces, allowing symbols to be exported only for use in selected modules (v6.16-rc1). * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c8be54240893dbf89c294cb6a9e338fdc2f73ead|modules-v6.16-rc1]] - 2024-06-02 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=29fe5d50dfa6b61043e2e89206389ae56b5596eb|modules-v6.15-rc6]] - 2024-05-09 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3929527918ffa6a0e5c31004ed06d8d1032fc1cf|modules-v6.15-rc5]] - 2024-04-30 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=01d5b167dc230cf3b6eb9dd7205f6a705026d1ce|modules-v6.15-rc1]] - 2024-03-30 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=41bfad507c04c3d0cced1277243aed6733616184|modules-v6.14-rc1]] - 2024-01-26 == 2024 == === 2024-07 - 2024-12 === Luis Chamberlain added Petr Pavlu, Sami Tolvanen and Daniel Gomez as reviewers/co-maintainers. The maintainership of the modules tree began rotating among them every six months. Petr took over first, starting with the v6.13-rc5 pull request. * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ef49c460ab89d3d0ccc01c0ac3b55a47927ec6d5|modules-v6.13-rc5]] - 2024-12-23 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=93e064ce854abfacdeb0ac526a13ad29d093e813|modules-v6.13-rc1-v2]] - 2024-11-29 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b5361254c9027c2b3730be1bebcdb37eed42e9a5|modules-v6.13-rc1]] - 2024-11-27 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6f81a446f86106c68630032e114024ec7a557077|modules-v6.12-rc1]] - 2024-09-28 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f488790059fe7be6b2b059ddee10835b2500b603|modules-v6.11-rc1]] - 2024-07-23 === 2024-01 - 2024-06 === * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a49468240e89628236b738b5ab9416eae8f90c15|modules-v6.10-rc1]] - 2024-05-15 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ce0c1c92656e3ea3840c4a5c748aa352285cae9c|modules-v6.9-rc1]] - 2024-03-13 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4cd083d53108b32f4c8ed92a3f85d7b36133c0c9|modules-v6.8-rc1]] - 2024-01-10 == 2023 == === 2023-07 - 2023-12 === Christoph Hellwig's `symbol_get()` fix which points to that we should remove those hacks and remove that call. Function `symbol_get()` is just a hack to address things which should be fixed through Kconfig at build time as was done in the later patches, and so ultimately it should just be removed. * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=21e80f3841c01aeaf32d7aee7bbc87b3db1aa0c6|modules-v6.7-rc1]] - 2023-11-01 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=daa22f5a78c27412e88d31780c4a6262cda559cd|modules-v6.6-rc1]] - 2023-08-29 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4e3c09e95499e83dafc93860d56070a76d20e830|modules-v6.5-rc1]] - 2023-06-28 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c43a6ff9f93f230cc0f448ebb5d86d277ad7771e|modules-6.4-rc5-second-pull]] - 2023-06-01 === 2023-01 - 2023-06 === Song Liu added a new `struct module_memory` replacement. Nick Alcock's removed `MODULE_LICENSE()` from non-modules. [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=064f4536d13939b6e8cdb71298ff5d657f4f8caa|We proved vmalloc memory allocation abuse comes from systemd udev]], we're wasting ~463 MiB per CPU lost prior to the first fix. After working with Linus on this he came up with a [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9b9879fc03275ffe0da328cf5b864d9e694167c8|brilliant simple solution making duplicate requests idempotent]]. * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c43a6ff9f93f230cc0f448ebb5d86d277ad7771e|modules-6.4-rc5-fixes-v2]] - 2023-06-01 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6d86b56f54533025d94df25d77ed324344e02337|modules-6.4-rc5-fixes]] - 2023-05-30 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d36f6efbe0cb422fe1e4475717d75f3737088832|modules-6.4-rc4]] - 2023-05-03 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0b891c83d8c54cb70e186456c2191adb5fd98c56|modules-6.4-rc1-v2]] - 2023-05-03 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b6a7828502dc769e1a5329027bc5048222fa210a|modules-v6-4-rc1]] - 2023-04-27 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c538944d8efb14e9809b685608490b017bfc2d48|modules-v6.3-rc1]] - 2023-02-23 == 2022 == === 2022-07 - 2022-12 === Implication of misalignment of some sections were discussed, for `.altinstructions` and `__bug_table sections`, there should be no real ill effects unless you have a buggy exception handler and we ran into one on parisc. Stephen Boyd added zstd in-kernel decompression support but the only users of this would be folks using the load-pin LSM because otherwise we do module decompression in userspace. * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3ba2c3ff98ea8bfb219288dbacf2a23a902c751b|modules-v6.2-rc1]] - 2022-12-13 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=385f4a10191d95f40b5af72097df06e70f85d69a|modules-v6.1-rc1]] - 2022-10-10 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e74acdf55da6649dd30be5b621a93b71cbe7f3f9|modules-v6.0-rc1]] - 2022-08-08 === 2022-01 - 2022-06 === Luis Chamberlain started maintaining as of the v5.17-rc1 pull request. The first order of business was to split up `kernel/module.c` into parts. The modules-v5.17-rc1 merge request was the last one with the modules code all in one place. Aaron Tomlin did all the work, he also added `CONFIG_MODULE_UNLOAD_TAINT_TRACKING`. Christophe Leroy added `CONFIG_ARCH_WANTS_MODULES_DATA_IN_VMALLOC` which lets architectures to request having modules data in vmalloc area instead of module area. * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ef98f9cfe20d8ca063365d46d4ab2b85eeeb324f|modules-v5.19-rc1]] - 2022-05-26 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=763978ca67a3d7be3915e2035e2a6c331524c748|modules-v5.17-rc1]] - 2022-01-17 == 2021 == === 2021-07 - 2021-12 === Jessica Yu is the maintainer. * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a931dd33d370896a683236bba67c0d6f3d01144d|modules-v5.14-rc1]] - 2021-07-07 === 2021-01 - 2021-06 === * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=65c61de9d090edb8a3cfb3f45541e268eb2cdb13|modules-v5.13-rc1]] - 2021-04-30 == 2020 == === 2020-07 - 2020-12 === * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=312dcaf967219effe0483785f24e4072a5bed9a5|modules-v5.11-rc1]] - 2020-12-17 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2b71482060e1e6962720dbca1dff702580fa0748|modules-v5.10-rc1]] - 2020-10-22 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0fd9cc6b0c72245375520ffc8d97ce5857b63b94|modules-v5.9-rc1]] - 2020-08-14 === 2020-01 - 2023-06 === * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=084623e468d535d98f883cc2ccf2c4fdf2108556|modules-v5.8-rc1]] - 2020-06-05 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c0cc271173b2e1c2d8d0ceaef14e4dfa79eefc0d|modules-v5.7-rc1]] - 2020-04-09 * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ddaefe8947b48b638f726cf89730ecc1000ebcc3|modules-v5.6-rc1]] - 2020-01-31 = Ongoing development = Things requiring more community eyeballs or maintainer review: * execmem_alloc() work to generalize bpf_prog_pack() * Rust patches for modules = TODO = Things which the maintainer or other developers can work on: * extend kdevops modules test to include kmod.git userspace tests * extend kdevops modules test to include the new stress-ng module stressor support * extend patchwork support to use kdevopes testing using all tests supported for incoming patches by certain developers, leverage the work eBPF folks have done * hookup kdevops modules testing with 0-day