Re: [PATCH v9 0/2] module: Extend module_blacklist parameter to built-in modules

Aaron Tomlin <[email protected]>
Newsgroups org.kernel.vger.rust-for-linux,org.kernel.vger.linux-arch,org.kernel.vger.linux-kernel,org.kernel.vger.linux-modules
Message-ID <2oh4gzy5y3slhtidyinx444m2xguffl2azbcoirbyw4j5cauho@4wugqgi5fjr2>
On Fri, Aug 14, 2026 at 01:16:01PM +0200, Petr Pavlu wrote:
> On 8/13/26 4:50 PM, Gary Guo wrote:
> > On Fri Aug 7, 2026 at 2:25 AM BST, Aaron Tomlin wrote:
> >> Currently, the "module_blacklist=" command-line parameter only applies to
> >> loadable modules. If a module is built-in, the parameter is silently
> >> ignored. This patch series extends the blacklisting functionality to
> >> built-in modules by intercepting their initialisation routines during early
> >> boot.
> >>
> >> Following review feedback, the implementation has been split into two
> >> separate changes to decouple the introduction of the new feature from the
> >> terminology renaming:
> >>
> >>     1.  The first patch extends the "module_blacklist=" parameter to
> >>         built-in modules using the original blacklist terminology. It
> >>         introduces the ".initcall.modnames" section to map initcall
> >>         function pointers to their associated KBUILD_MODNAME strings
> >>         (restricted only to module_init() invocations to save memory and
> >>         avoid matching core kernel subsystems). It also restricts the check
> >>         to a boot-time __init wrapper to eliminate Use-After-Free (UAF) and
> >>         Spectre v1 vulnerability risks when loading dynamic modules at
> >>         runtime, and adds a fast-path check to eliminate lookup overhead
> >>         when the parameter is not in use
> >>
> >>     2.  The second patch renames the variables and helper functions to
> >>         adopt the preferred "module_denylist=" and module_is_denylisted()
> >>         terminology in the codebase. To preserve the existing user-space
> >>         ABI, "module_blacklist=" is kept as a legacy alias pointing to the
> >>         same module_denylist variable
> >>
> >> Aaron Tomlin (2):
> >>   module: Extend module_blacklist parameter to built-in modules
> >>   module: Rename module_blacklist to module_denylist
> > 
> > I feel with
> > https://lore.kernel.org/driver-core/[email protected]/
> > and this we're really making loadable module and builtin modules less different.
> > 
> > I wonder if we should just somewhat unify these completly, so built-in modules
> > just behave identically to loadable modules, just without runtime relocations
> > and ability to unload.
> 
> I can imagine this being possible and potentially useful. For instance,
> a minimal `struct module` could be used for each built-in and loadable
> module. For the latter, it could be then extended to something like
> `struct loadable_module` containing all the fields currently needed for
> loadable modules.
> 
> It could also help improve some C APIs. Functions currently cannot
> determine whether a NULL value passed as a module parameter indicates an
> invalid pointer or a built-in module [1].
> 
> > 
> > Of course, that's quite a big change... And mostly likely people won't care
> > because almost everything is built as loadable modules in distros anyway.
> 
> I agree this looks non-trivial. It would require proper investigation to
> see how it might actually turn out.

Hi Gary, Petr,

Thanks for the interesting discussion and ideas.

I agree that unifying built-in and loadable modules under a common, minimal
representation is an attractive long-term architectural concept. It would
certainly bring cleaner semantics to APIs.

However, as noted, such a unification is a non-trivial, kernel-wide
overhaul affecting core infrastructure etc.

In contrast, this series is focused on solving a specific, practical
debugging and boot configuration issue with minimal intrusion, using
metadata that is reclaimed entirely after boot.

Given the substantial difference in scope, I believe it would be best to
keep this series focused on the immediate blacklist/denylist functionality
and defer the broader module representation investigation for future work.


Kind regards,
-- 
Aaron Tomlin
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.