]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
kclient: fix lock leak in mdsc_handle_map
authorSage Weil <sage@newdream.net>
Wed, 14 Jan 2009 00:59:08 +0000 (16:59 -0800)
committerSage Weil <sage@newdream.net>
Wed, 14 Jan 2009 00:59:08 +0000 (16:59 -0800)
src/kernel/mds_client.c

index 792e9a8f295eb087ed04169d29eeea8b56302486..030594c8b84168c82e77753309e02a4ba3a99c9a 100644 (file)
@@ -2171,7 +2171,7 @@ void ceph_mdsc_handle_map(struct ceph_mds_client *mdsc, struct ceph_msg *msg)
        newmap = ceph_mdsmap_decode(&p, end);
        if (IS_ERR(newmap)) {
                err = PTR_ERR(newmap);
-               goto bad;
+               goto bad_unlock;
        }
 
        /* swap into place */
@@ -2197,6 +2197,8 @@ void ceph_mdsc_handle_map(struct ceph_mds_client *mdsc, struct ceph_msg *msg)
        complete(&mdsc->map_waiters);
        return;
 
+bad_unlock:
+       mutex_unlock(&mdsc->mutex);
 bad:
        derr(1, "problem with mdsmap %d\n", err);
        return;