On Thu Oct 16, 2025 at 9:55 PM JST, Danilo Krummrich wrote: > The driver model defines the lifetime of the private data stored in (and > owned by) a bus device to be valid from when the driver is bound to a > device (i.e. from successful probe()) until the driver is unbound from > the device. > > This is already taken care of by the Rust implementation of the driver > model. However, we still ask drivers to return a Result<Pin<KBox<Self>>> > from probe(). > > Unlike in C, where we do not have the concept of initializers, but > rather deal with uninitialized memory, drivers can just return an > impl PinInit<Self, Error> instead. > > This contributed to more clarity to the fact that a driver returns it's
nit: s/it's/its > device private data in probe() and the Rust driver model owns the data, > manages the lifetime and - considering the lifetime - provides (safe) > accessors for the driver. > > Hence, let probe() functions return an impl PinInit<Self, Error> instead > of Result<Pin<KBox<Self>>>. > > Signed-off-by: Danilo Krummrich <[email protected]> Short anecdote: I was curious about measuring the footprint impact of pin initializers, so I did a `size vmlinux` before and after this patch to compare the size of the `text` section. This patch removes exactly 60 bytes of binary code, which I guess corresponds to the duplicated `KBox` allocations that are now gone. It's great to confirm once again how Rust abstractions are indeed zero-overhead! :) Also, fwiw, Reviewed-by: Alexandre Courbot <[email protected]>
