diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index 98c8736cced2..a207b342e7da 100644 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c @@ -1828,8 +1828,10 @@ __open_export_target_session(struct ceph_mds_client *mdsc, int target) if (session->s_state == CEPH_MDS_SESSION_NEW || session->s_state == CEPH_MDS_SESSION_CLOSING) { ret = __open_session(mdsc, session); - if (ret) + if (ret) { + ceph_put_mds_session(session); return ERR_PTR(ret); + } } return session;