From 8645e24dd4fb3ecc9f02b34a1be916620b5f71b1 Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Thu, 6 Jun 2019 09:48:42 -0400 Subject: [PATCH] common: OutputDataSocket retakes mutex on error path the list of buffers is protected by mutex m_lock. when dump_data() fails and puts unwritten buffers back into the list, it needs to reaquire the lock Fixes: http://tracker.ceph.com/issues/40188 Signed-off-by: Casey Bodley --- src/common/OutputDataSocket.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common/OutputDataSocket.cc b/src/common/OutputDataSocket.cc index daba820cf05..2603b552696 100644 --- a/src/common/OutputDataSocket.cc +++ b/src/common/OutputDataSocket.cc @@ -303,6 +303,7 @@ int OutputDataSocket::dump_data(int fd) ret = safe_write(fd, delim.c_str(), delim.length()); } if (ret < 0) { + std::scoped_lock lock(m_lock); for (; iter != l.end(); ++iter) { bufferlist& bl = *iter; data.push_back(bl); -- 2.39.5