[PATCH 0/3] rust: devres: add DevresLt for ForLt-aware device resource access

From: Danilo Krummrich

Date: Wed May 06 2026 - 18:00:46 EST


Devres<T> stores resources as T and hands out &'bound T from its access
methods. For lifetime-parameterized types like Bar<'bound, SIZE> that
are transmuted to 'static for storage, the synthetic 'static leaks to
callers -- any method on the stored type that surfaces its lifetime
parameter would yield a &'static reference, which is unsound.

This series adds DevresLt<F: ForLt>, a thin wrapper around
Devres<F::Of<'static>> that applies ForLt::cast_ref in all access paths
to shorten the stored 'static back to the caller's borrow lifetime.
Devres<T: Send> remains unchanged for static resource types.

Also implement ForLt for Bar, IoMem and ExclusiveIoMem, and their
into_devres() methods to return DevresLt instead of plain Devres.
Provide convenience type aliases DevresBar, DevresIoMem and
DevresExclusiveIoMem.

This series depends on [1].

[1] https://lore.kernel.org/driver-core/20260506215113.851360-1-dakr@xxxxxxxxxx/

Danilo Krummrich (3):
rust: devres: add DevresLt for ForLt-aware device resource access
rust: pci: return DevresLt from Bar::into_devres()
rust: io: mem: return DevresLt from
IoMem/ExclusiveIoMem::into_devres()

drivers/pwm/pwm_th1520.rs | 5 +-
rust/kernel/devres.rs | 97 ++++++++++++++++++++++++++++++++++++---
rust/kernel/io/mem.rs | 55 ++++++++++++++++------
rust/kernel/pci.rs | 1 +
rust/kernel/pci/io.rs | 30 ++++++++----
5 files changed, 155 insertions(+), 33 deletions(-)

--
2.54.0