From 8ca79a96c8d5daacf9cf5d43e4d9e68f020b0373 Mon Sep 17 00:00:00 2001 From: Josh Durgin Date: Fri, 23 Sep 2011 14:04:14 -0700 Subject: [PATCH] librbd: don't zero negative lengths They are past the end of the buffer (and wrap around). Signed-off-by: Josh Durgin --- src/librbd.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/librbd.cc b/src/librbd.cc index 8dc843d8a75a..0192521aae75 100644 --- a/src/librbd.cc +++ b/src/librbd.cc @@ -1371,7 +1371,7 @@ ssize_t handle_sparse_read(CephContext *cct, ldout(cct, 10) << "block_ofs=" << block_ofs << dendl; /* a hole? */ - if (extent_ofs - block_ofs > 0) { + if (extent_ofs > block_ofs) { ldout(cct, 10) << "<1>zeroing " << buf_ofs << "~" << extent_ofs << dendl; r = cb(buf_ofs, extent_ofs - block_ofs, NULL, arg); if (r < 0) { @@ -1398,7 +1398,7 @@ ssize_t handle_sparse_read(CephContext *cct, } /* last hole */ - if (buf_len - buf_ofs) { + if (buf_len > buf_ofs) { ldout(cct, 10) << "<3>zeroing " << buf_ofs << "~" << buf_len - buf_ofs << dendl; r = cb(buf_ofs, buf_len - buf_ofs, NULL, arg); if (r < 0) { -- 2.47.3