From 79961bc3386e4a926e628552586020ff17d9d086 Mon Sep 17 00:00:00 2001 From: David Zafman Date: Tue, 2 Jun 2015 13:46:23 -0700 Subject: [PATCH] osd: Even in objects_read_sync() case don't read past oi.size Fixes: #11511 Signed-off-by: David Zafman --- src/osd/ReplicatedPG.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 6fbf139f6964..5e0d5771f57c 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -6059,13 +6059,14 @@ int ReplicatedPG::fill_in_copy_get( bufferlist& bl = reply_obj.data; if (left > 0 && !cursor.data_complete) { if (cursor.data_offset < oi.size) { + left = MIN(oi.size - cursor.data_offset, (uint64_t)left); if (cb) { async_read_started = true; ctx->pending_async_reads.push_back( make_pair( boost::make_tuple(cursor.data_offset, left, osd_op.op.flags), make_pair(&bl, cb))); - result = MIN(oi.size - cursor.data_offset, (uint64_t)left); + result = left; cb->len = result; } else { result = pgbackend->objects_read_sync( -- 2.47.3