diff options
author | Sage Weil <sage@newdream.net> | 2010-03-25 00:30:19 -0400 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2010-05-17 18:25:14 -0400 |
commit | 6f46cb29350963527b663c9eb4fe964daa9ae707 (patch) | |
tree | 6550abaa45abaff66668e2914c1219e9f4cb930f /fs/ceph/osd_client.c | |
parent | c7708075f18086ee7d02df8b891910893e9ea372 (diff) |
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.c | 1 |
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, | |||
1386 | req->r_reply, req->r_con_filling_msg); | 1386 | req->r_reply, req->r_con_filling_msg); |
1387 | ceph_con_revoke_message(req->r_con_filling_msg, req->r_reply); | 1387 | ceph_con_revoke_message(req->r_con_filling_msg, req->r_reply); |
1388 | ceph_con_put(req->r_con_filling_msg); | 1388 | ceph_con_put(req->r_con_filling_msg); |
1389 | req->r_con_filling_msg = NULL; | ||
1389 | } | 1390 | } |
1390 | 1391 | ||
1391 | if (front > req->r_reply->front.iov_len) { | 1392 | if (front > req->r_reply->front.iov_len) { |