From: Ilya Dryomov Date: Tue, 19 Feb 2019 15:07:22 +0000 (+0100) Subject: librados: don't claim ObjectOperation::cmpext() buffer X-Git-Tag: v13.2.7~276^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0289be28951655302b15e7c342e375ed3b77fdc8;p=ceph.git 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 --- diff --git a/src/librados/librados.cc b/src/librados/librados.cc index 77bc9ca9ad3..e4698f2adad 100644 --- a/src/librados/librados.cc +++ b/src/librados/librados.cc @@ -158,7 +158,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)