ceph: allow ceph_put_mds_session to take NULL or ERR_PTR
authorJeff Layton <jlayton@kernel.org>
Wed, 9 Jun 2021 18:09:52 +0000 (14:09 -0400)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 28 Jun 2021 22:15:52 +0000 (00:15 +0200)
...to simplify some error paths.

Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Luis Henriques <lhenriques@suse.de>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
fs/ceph/dir.c
fs/ceph/inode.c
fs/ceph/mds_client.c
fs/ceph/metric.c

index 9ba79b6..973489d 100644 (file)
@@ -1809,8 +1809,7 @@ static void ceph_d_release(struct dentry *dentry)
        dentry->d_fsdata = NULL;
        spin_unlock(&dentry->d_lock);
 
-       if (di->lease_session)
-               ceph_put_mds_session(di->lease_session);
+       ceph_put_mds_session(di->lease_session);
        kmem_cache_free(ceph_dentry_cachep, di);
 }
 
index df0c8a7..6f43542 100644 (file)
@@ -1154,8 +1154,7 @@ static inline void update_dentry_lease(struct inode *dir, struct dentry *dentry,
        __update_dentry_lease(dir, dentry, lease, session, from_time,
                              &old_lease_session);
        spin_unlock(&dentry->d_lock);
-       if (old_lease_session)
-               ceph_put_mds_session(old_lease_session);
+       ceph_put_mds_session(old_lease_session);
 }
 
 /*
@@ -1200,8 +1199,7 @@ static void update_dentry_lease_careful(struct dentry *dentry,
                              from_time, &old_lease_session);
 out_unlock:
        spin_unlock(&dentry->d_lock);
-       if (old_lease_session)
-               ceph_put_mds_session(old_lease_session);
+       ceph_put_mds_session(old_lease_session);
 }
 
 /*
index e5af591..ec66963 100644 (file)
@@ -664,6 +664,9 @@ struct ceph_mds_session *ceph_get_mds_session(struct ceph_mds_session *s)
 
 void ceph_put_mds_session(struct ceph_mds_session *s)
 {
+       if (IS_ERR_OR_NULL(s))
+               return;
+
        dout("mdsc put_session %p %d -> %d\n", s,
             refcount_read(&s->s_ref), refcount_read(&s->s_ref)-1);
        if (refcount_dec_and_test(&s->s_ref)) {
@@ -1438,8 +1441,7 @@ static void __open_export_target_sessions(struct ceph_mds_client *mdsc,
 
        for (i = 0; i < mi->num_export_targets; i++) {
                ts = __open_export_target_session(mdsc, mi->export_targets[i]);
-               if (!IS_ERR(ts))
-                       ceph_put_mds_session(ts);
+               ceph_put_mds_session(ts);
        }
 }
 
index 9577c71..5ac151e 100644 (file)
@@ -311,8 +311,7 @@ void ceph_metric_destroy(struct ceph_client_metric *m)
 
        cancel_delayed_work_sync(&m->delayed_work);
 
-       if (m->session)
-               ceph_put_mds_session(m->session);
+       ceph_put_mds_session(m->session);
 }
 
 #define METRIC_UPDATE_MIN_MAX(min, max, new)   \