[PATCH v8 0/9] Generate modules.builtin.alias from match ids

From: Allen Webb
Date: Mon Dec 19 2022 - 14:19:13 EST


Generate modules.builtin.alias from match ids

This patch series (v8) generates `modules.builtin.alias` during modpost.
The goal is for tools like USBGuard to leverage not only modules.aliases
but also `modules.builtin.aliases` to associate devices with the modules
that may be bound before deciding to authorize a device or not. This is
particularly useful in cases when new devices of a particular type
shouldn't be allowed part of the time like for lock screens.

Also included in this series are style fixes and fixes for build
breakages for built-in modules that relied on MODULE_DEVICE_TABLE being
a no-op. Some of these were typos in the device table name and one
ifdef-ed out the device table.

--

# Generate modules.builtin.alias from match ids

This series (v7) has incremental improvements over the previous series.
One big positive of this patch series is it makes it harder for bugs
in kernel modules related to MODULE_DEVICE_TABLE to hide when a module
is only ever tested as a built-in module. This is demonstrated by all
the required fixes at the beginning of the series.

Note, cover letters were first added in v5.

RFC (broken patch): https://lore.kernel.org/lkml/CAJzde042-M4UbpNYKw0eDVg4JqYmwmPYSsmgK+kCMTqsi+-2Yw@xxxxxxxxxxxxxx/
v1 (missing v1 label): https://lore.kernel.org/lkml/20221111152852.2837363-1-allenwebb@xxxxxxxxxx/
v2 (missing v2 label): https://lore.kernel.org/lkml/20221128201332.3482092-1-allenwebb@xxxxxxxxxx/
v3: https://lore.kernel.org/lkml/20221129224313.455862-1-allenwebb@xxxxxxxxxx/
v4: https://lore.kernel.org/lkml/20221130221447.1202206-1-allenwebb@xxxxxxxxxx/
v5: https://lore.kernel.org/lkml/20221201211630.101541-1-allenwebb@xxxxxxxxxx/
v6: https://lore.kernel.org/lkml/20221202224540.1446952-1-allenwebb@xxxxxxxxxx/
v7: https://lore.kernel.org/lkml/20221216221703.294683-1-allenwebb@xxxxxxxxxx/
v8: This version

## Patch series status
123456789012345678901234567890123456789012345678901234567890123456789012
This series is still going through revisions in response to comments.

I believe there is potential to improve the Makefile part of the patch
series as well as an open question of whether modpost should generate
`modules.built.alias` directly or create a vmlinuz.mod.c containing the
missing module info for the match-id based aliases for built-in modules.

## Acknowledgements

Thanks to Greg Kroah-Hartman, Christophe Leroy, and the Linux
maintainers for being patient with me as I have worked through learning
the kernel workflow to get this series into a more presentable state.

Thanks to Luis Chamberlain for raising the alternative of using kmod to
address the primary motivation of the patch series.

Also, thanks to Intel's kernel test robot <lkp@xxxxxxxxx> for catching
issues that showed up on different kernel configurations.


Allen Webb (9):
imx: Fix typo
rockchip-mailbox: Fix typo
scsi/BusLogic: Always include device id table
stmpe-spi: Fix typo
module.h: MODULE_DEVICE_TABLE for built-in modules
modpost: Track module name for built-in modules
modpost: Add -b option for emitting built-in aliases
file2alias.c: Implement builtin.alias generation
build: Add modules.builtin.alias

.gitignore | 1 +
Makefile | 1 +
drivers/mailbox/rockchip-mailbox.c | 2 +-
drivers/mfd/stmpe-spi.c | 2 +-
drivers/scsi/BusLogic.c | 2 -
drivers/soc/imx/imx8mp-blk-ctrl.c | 2 +-
include/linux/module.h | 15 ++++-
scripts/Makefile.modpost | 17 +++++-
scripts/mod/file2alias.c | 94 +++++++++++++++++++++++-------
scripts/mod/modpost.c | 23 +++++++-
scripts/mod/modpost.h | 2 +
11 files changed, 131 insertions(+), 30 deletions(-)

--
2.37.3