On Wed, Sep 17, 2025 at 10:07:38PM -0700, Nicolin Chen wrote: > On Wed, Sep 17, 2025 at 05:01:47PM -0300, Jason Gunthorpe wrote: > > Fix this by putting the core code in charge of the file lifetime, and call > > __fput_sync() during abort to ensure that release() is called before > > kfree. __fput_sync() is a bit too tricky to open code in all the object > > implementations > > Mind elaborating this "too tricky"? I thought that we're supposed > to use __fput_sync(), instead of fput(), in the alloc function in > the first place?
I don't think anything should be widely using __fput_sync(), that's really weird and special. Our strange refcounting cycle is what motivates this. Drivers should be using normal fput(). > > + /* > > + * files should hold a users refcount while the file is open and > > + * put it back in their release. They should hold a pointer to > > + * obj in their private data. Normal fput() is deferred to a > > Nit: there is only one file_offset per obj, so it should be "file" > and "it/its"? Ok Thanks, Jason
