summaryrefslogtreecommitdiffstats
path: root/fs/ceph/osd_client.c
diff options
context:
space:
mode:
authorSage Weil2010-03-25 05:30:19 +0100
committerSage Weil2010-05-18 00:25:14 +0200
commit6f46cb29350963527b663c9eb4fe964daa9ae707 (patch)
tree6550abaa45abaff66668e2914c1219e9f4cb930f /fs/ceph/osd_client.c
parentceph: cleanup: remove dead code (diff)
downloadkernel-qcow2-linux-6f46cb29350963527b663c9eb4fe964daa9ae707.tar.gz
kernel-qcow2-linux-6f46cb29350963527b663c9eb4fe964daa9ae707.tar.xz
kernel-qcow2-linux-6f46cb29350963527b663c9eb4fe964daa9ae707.zip
ceph: fix theoretically possible double-put on connection
This would only trigger if we bailed out before resetting r_con_filling_msg because the server reply was corrupt (oversized). Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph/osd_client.c')
-rw-r--r--fs/ceph/osd_client.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/ceph/osd_client.c b/fs/ceph/osd_client.c
index 22a33f8c8807..3d2bfbc232dc 100644
--- a/fs/ceph/osd_client.c
+++ b/fs/ceph/osd_client.c
@@ -1386,6 +1386,7 @@ static struct ceph_msg *get_reply(struct ceph_connection *con,
req->r_reply, req->r_con_filling_msg);
ceph_con_revoke_message(req->r_con_filling_msg, req->r_reply);
ceph_con_put(req->r_con_filling_msg);
+ req->r_con_filling_msg = NULL;
}
if (front > req->r_reply->front.iov_len) {