fs: fix missing mutex acquire in compressed storage invalidate/find

This commit is contained in:
Michael Scire 2022-03-12 13:35:30 -08:00
parent 1d0c9ae71a
commit d76e678da2

View file

@ -893,6 +893,10 @@ namespace ams::fssystem {
} }
void Invalidate() { void Invalidate() {
/* Acquire exclusive access to our manager. */
std::scoped_lock lk(m_mutex);
/* Invalidate all entries. */
return m_block_cache_manager.Invalidate(); return m_block_cache_manager.Invalidate();
} }
@ -1095,11 +1099,17 @@ namespace ams::fssystem {
AMS_ASSERT(out != nullptr); AMS_ASSERT(out != nullptr);
AMS_ASSERT(out_entry != nullptr); AMS_ASSERT(out_entry != nullptr);
/* Acquire exclusive access to our entries. */
std::scoped_lock lk(m_mutex);
/* Find the buffer. */ /* Find the buffer. */
R_RETURN(this->FindBufferImpl(out, out_entry, offset)); R_RETURN(this->FindBufferImpl(out, out_entry, offset));
} }
Result FindBufferImpl(fs::IBufferManager::MemoryRange *out, CacheEntry *out_entry, s64 offset) { Result FindBufferImpl(fs::IBufferManager::MemoryRange *out, CacheEntry *out_entry, s64 offset) {
/* Check pre-conditions. */
AMS_ASSERT(m_mutex.IsLockedByCurrentThread());
/* Get our block cache count */ /* Get our block cache count */
const auto count = m_block_cache_manager.GetCount(); const auto count = m_block_cache_manager.GetCount();