Re: [PATCH 2/5] devres: export devres_node_init() and devres_node_add()
From: Danilo Krummrich
Date: Fri Feb 06 2026 - 08:16:39 EST
On Fri Feb 6, 2026 at 1:34 PM CET, Greg KH wrote:
> That's fine, because the rust driver core code should also be built into
> the kernel, not as a module, right?
Yes, but the Rust compiler may still choose to put some of the core code into
the module.
Especially with generic types and functions the Rust compiler may move some the
generated code for a certain type instance into the module that instanciates the
type.
For instance, even though rust/kernel/devres.rs is *always* built-in, we get the
following error when devres_node_init() is not exported when the users of this
built-in code are built as module.
ERROR: modpost: "devres_node_init" [drivers/pwm/pwm_th1520.ko] undefined!
ERROR: modpost: "devres_node_init" [drivers/gpu/drm/tyr/tyr.ko] undefined!
ERROR: modpost: "devres_node_init" [drivers/gpu/nova-core/nova_core.ko] undefined!
ERROR: modpost: "devres_node_init" [samples/rust/rust_dma.ko] undefined!
ERROR: modpost: "devres_node_init" [samples/rust/rust_driver_pci.ko] undefined!
ERROR: modpost: "devres_node_init" [samples/rust/rust_driver_auxiliary.ko] undefined!
make[2]: *** [scripts/Makefile.modpost:147: Module.symvers] Error 1
However, sprinkling "raw" EXPORT_SYMBOL_GPL() due to that is not great at all.
Hence, we could do something like in [1] instead. I don't know if there are
other options that may be better though.
[1] https://lore.kernel.org/all/DG7UR3WWZB4V.2MYMJJH1VDHH@xxxxxxxxxx/