From 1a2d977e113557c6c36c850da5ed138e65f0e535 Mon Sep 17 00:00:00 2001 From: Ilya Dryomov Date: Tue, 19 Feb 2019 16:07:22 +0100 Subject: [PATCH] librados: don't claim ObjectOperation::cmpext() buffer This is counter-intuitive and doesn't match the behavior of either other compare ops (cmpxattr, omap_cmp) or write ops. Fixes: http://tracker.ceph.com/issues/38383 Signed-off-by: Ilya Dryomov (cherry picked from commit 4daddf0564dcd548ecc7c214ab9a41fc12ba71c0) Conflicts: don't change method signature but copy bufferlist --- src/librados/librados.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/librados/librados.cc b/src/librados/librados.cc index 79d55c796dfeb..8905111f07388 100644 --- a/src/librados/librados.cc +++ b/src/librados/librados.cc @@ -157,7 +157,8 @@ void librados::ObjectOperation::cmpext(uint64_t off, int *prval) { ::ObjectOperation *o = &impl->o; - o->cmpext(off, cmp_bl, prval); + bufferlist c = cmp_bl; + o->cmpext(off, c, prval); } void librados::ObjectOperation::cmpxattr(const char *name, uint8_t op, const bufferlist& v) -- 2.39.5