Linux kernel module support
This is an informal wiki to keep tabs on Linux kernel module support ongoing R&D and outstanding things.
Contents
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.
modules-v6.7-rc1 - 2023-11-01
modules-v6.6-rc1 - 2023-08-29
modules-v6.5-rc1 - 2023-06-28
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. 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 brilliant simple solution making duplicate requests idempotent.
modules-6.4-rc5-fixes-v2 - 2023-06-01
modules-6.4-rc5-fixes - 2023-05-30
modules-6.4-rc4 - 2023-05-03
modules-6.4-rc1-v2 - 2023-05-03
modules-v6-4-rc1 - 2023-04-27
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.
modules-v6.2-rc1| - 2022-12-13
modules-v6.1-rc1 - 2022-10-10
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.
modules-v5.19-rc1 - 2022-05-26
modules-v5.17-rc1 - 2022-01-17
2021
2021-07 - 2021-12
Jessica Yu is maintainer.
modules-v5.14-rc1 - 2021-07-07
2021-01 - 2021-06
modules-v5.13-rc1 - 2021-04-30
2020
2020-07 - 2020-12
modules-v5.11-rc1 - 2020-12-17
modules-v5.10-rc1 - 2020-10-22
modules-v5.9-rc1 - 2020-08-14
2020-01 - 2023-06
modules-v5.8-rc1 - 2020-06-05
modules-v5.7-rc1 - 2020-04-09
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 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