From: Sage Weil Date: Mon, 3 Feb 2014 16:54:14 +0000 (-0800) Subject: client: use 64-bit value in sync read eof logic X-Git-Tag: v0.67.6~17 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c301ec689caac5bbcd21e02226045d3454cc82fd;p=ceph.git client: use 64-bit value in sync read eof logic The file size can jump to a value that is very much larger than our current position (for example, it could be a disk image file that gets a sparse write at a large offset). Use a 64-bit value so that 'some' doesn't overflow. Signed-off-by: Sage Weil Reviewed-by: John Spray (cherry picked from commit 7ff2b541c24d1c81c3bcfbcb347694c2097993d7) --- diff --git a/src/client/Client.cc b/src/client/Client.cc index 4b10cf5c1ba..7cf3195365d 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -5859,7 +5859,7 @@ int Client::_read_sync(Fh *f, uint64_t off, uint64_t len, bufferlist *bl) if (r >= 0 && r < wanted) { if (pos < in->size) { // zero up to known EOF - int some = in->size - pos; + int64_t some = in->size - pos; if (some > left) some = left; bufferptr z(some);