On Wed, 2022-01-26 at 17:22 +0100, Ilya Dryomov wrote: > On Tue, Jan 25, 2022 at 10:08 PM Jeff Layton <jlayton@xxxxxxxxxx> wrote: > > > > The reference acquired by try_prep_async_create is currently leaked. > > Ensure we put it. > > > > Fixes: 9a8d03ca2e2c ("ceph: attempt to do async create when possible") > > Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx> > > --- > > fs/ceph/file.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/fs/ceph/file.c b/fs/ceph/file.c > > index ea1e9ac6c465..cbe4d5a5cde5 100644 > > --- a/fs/ceph/file.c > > +++ b/fs/ceph/file.c > > @@ -766,8 +766,10 @@ int ceph_atomic_open(struct inode *dir, struct dentry *dentry, > > restore_deleg_ino(dir, req->r_deleg_ino); > > ceph_mdsc_put_request(req); > > try_async = false; > > + ceph_put_string(rcu_dereference_raw(lo.pool_ns)); > > goto retry; > > } > > + ceph_put_string(rcu_dereference_raw(lo.pool_ns)); > > goto out_req; > > } > > } > > -- > > 2.34.1 > > > > Hi Jeff, > > Where is the try_prep_async_create() reference put in case of success? > It doesn't look like ceph_finish_async_create() actually consumes it. > The second call above puts it in the case of success, or in the case of any error that isn't -EJUKEBOX. -- Jeff Layton <jlayton@xxxxxxxxxx>