= 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 modules"`. == 2023 == === 2023-07 - 2023-12 === Christoph Hellwig's symbol_get() fix which points to that we should remove those hacks and remove that call. 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 starts 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 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: * Add support for [[https://lore.kernel.org/all/ZCIiBHyrzDoTJPXT@bombadil.infradead.org/|EXPORT_SYMBOL_FOR()]] to force restricting access to symbols only for certain modules * 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