[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