From 43e3920a7be123cee1e0bc6c1fafcdeff696bbe7 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 (cherry picked from commit 8645e24dd4fb3ecc9f02b34a1be916620b5f71b1) --- src/common/OutputDataSocket.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common/OutputDataSocket.cc b/src/common/OutputDataSocket.cc index daba820cf05a3..2603b552696b6 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