ceph: fix leak of monc mutex
authorSage Weil <sage@newdream.net>
Fri, 11 Dec 2009 16:55:23 +0000 (08:55 -0800)
committerSage Weil <sage@newdream.net>
Fri, 11 Dec 2009 16:59:11 +0000 (08:59 -0800)
Fix leak of monc mutex on ENOMEM or bad fsid when receiving new mon map.
Audited all other users.

Signed-off-by: Sage Weil <sage@newdream.net>
fs/ceph/mon_client.c

index 1dd0dc258c50c7f1d74702e415fd130e2701a20b..a76da5e6dbdd0016f0b0f67b239ef6983c7e2114 100644 (file)
@@ -320,17 +320,18 @@ static void ceph_monc_handle_map(struct ceph_mon_client *monc,
        if (IS_ERR(monmap)) {
                pr_err("problem decoding monmap, %d\n",
                       (int)PTR_ERR(monmap));
-               return;
+               goto out;
        }
 
        if (ceph_check_fsid(monc->client, &monmap->fsid) < 0) {
                kfree(monmap);
-               return;
+               goto out;
        }
 
        client->monc.monmap = monmap;
        kfree(old);
 
+out:
        mutex_unlock(&monc->mutex);
        wake_up(&client->mount_wq);
 }