On Thu, Jun 26, 2025, at 4:36 PM, Benno Lossin wrote: > On Fri Jun 27, 2025 at 1:21 AM CEST, Boqun Feng wrote: >> On Thu, Jun 26, 2025, at 4:17 PM, Benno Lossin wrote: >>> On Thu Jun 26, 2025 at 10:20 PM CEST, Boqun Feng wrote: >>>> On Thu, Jun 26, 2025 at 10:00:42PM +0200, Danilo Krummrich wrote: >>>>> diff --git a/rust/kernel/types.rs b/rust/kernel/types.rs >>>>> index 3958a5f44d56..74c787b352a9 100644 >>>>> --- a/rust/kernel/types.rs >>>>> +++ b/rust/kernel/types.rs >>>>> @@ -27,6 +27,9 @@ >>>>> /// [`into_foreign`]: Self::into_foreign >>>>> /// [`PointedTo`]: Self::PointedTo >>>>> pub unsafe trait ForeignOwnable: Sized { >>>>> + /// The payload type of the foreign-owned value. >>>>> + type Target; >>>> >>>> I think `ForeignOwnable` also implies a `T` maybe get dropped via a >>>> pointer from `into_foreign()`. Not sure it's worth mentioning though. >>> >>> What? How would that happen? >> >> The owner of the pointer can do from_foreign() and eventually drop >> the ForeignOwnable, hence dropping T. > > I'm confused, you said `into_foreign` above. I don't think any sensible > ForeignOwnable implementation will drop a T in any of its functions. > A KBox<T> would drop T when it gets dropped, no? A Arc<T> would drop T when it gets dropped if it’s the last refcount. I was trying to say “ForeignOwnable::drop() may implies Target::drop()”, that’s what a “payload” means. Maybe that I used “T” instead of “Target” in the original message caused confusion? Regards, Boqun > --- > Cheers, > Benno