On Wed Feb 4, 2026 at 11:56 AM GMT, Andreas Hindborg wrote: > From: Oliver Mangold <[email protected]> > > There are types where it may both be reference counted in some cases and > owned in others. In such cases, obtaining `ARef<T>` from `&T` would be > unsound as it allows creation of `ARef<T>` copy from `&Owned<T>`. > > Therefore, we split `AlwaysRefCounted` into `RefCounted` (which `ARef<T>` > would require) and a marker trait to indicate that the type is always > reference counted (and not `Ownable`) so the `&T` -> `ARef<T>` conversion > is possible. > > - Rename `AlwaysRefCounted` to `RefCounted`. > - Add a new unsafe trait `AlwaysRefCounted`. > - Implement the new trait `AlwaysRefCounted` for the newly renamed > `RefCounted` implementations. This leaves functionality of existing > implementers of `AlwaysRefCounted` intact. > > Original patch by Oliver Mangold <[email protected]> [1]. > > Link: https://lore.kernel.org/r/[email protected] > [1] > Suggested-by: Alice Ryhl <[email protected]> > Reviewed-by: Daniel Almeida <[email protected]> > Signed-off-by: Andreas Hindborg <[email protected]>
I think you also need to update the `AlwaysRefCounted` reference mentioned in the `Owned` patch too? (Or perhaps this patch should be moved before `Owned` instead?) With that fixed: Reviewed-by: Gary Guo <[email protected]> > --- > rust/kernel/auxiliary.rs | 7 +++++- > rust/kernel/block/mq/request.rs | 15 +++++++------ > rust/kernel/cred.rs | 13 ++++++++++-- > rust/kernel/device.rs | 10 ++++++--- > rust/kernel/device/property.rs | 7 +++++- > rust/kernel/drm/device.rs | 10 ++++++--- > rust/kernel/drm/gem/mod.rs | 8 ++++--- > rust/kernel/fs/file.rs | 16 ++++++++++---- > rust/kernel/i2c.rs | 16 +++++++++----- > rust/kernel/mm.rs | 15 +++++++++---- > rust/kernel/mm/mmput_async.rs | 9 ++++++-- > rust/kernel/opp.rs | 10 ++++++--- > rust/kernel/owned.rs | 2 +- > rust/kernel/pci.rs | 10 ++++++++- > rust/kernel/pid_namespace.rs | 12 +++++++++-- > rust/kernel/platform.rs | 7 +++++- > rust/kernel/sync/aref.rs | 47 > ++++++++++++++++++++++++++--------------- > rust/kernel/task.rs | 10 ++++++--- > rust/kernel/types.rs | 3 ++- > 19 files changed, 164 insertions(+), 63 deletions(-)
