Merge "vulkan-cereal: add locking on the BlobManager" am: 2d16188412 am: 481c9a7187 am: 1167688b9a am: 62a0b56c85 am: 0bbfac28a6 am: 11dfa517d3

Original change: https://android-review.googlesource.com/c/device/generic/vulkan-cereal/+/2584355

Change-Id: Ib702041b619fd3707339e72eece748aa822265da
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
GitOrigin-RevId: 26b03aad895106a4694424775745cfc04b9ff74d
diff --git a/stream-servers/BlobManager.cpp b/stream-servers/BlobManager.cpp
index d322431..938f275 100644
--- a/stream-servers/BlobManager.cpp
+++ b/stream-servers/BlobManager.cpp
@@ -34,11 +34,13 @@
     };
 
     auto key = std::make_pair(ctxId, blobId);
+    std::lock_guard<std::mutex> lock(mLock);
     mHostMemInfos.insert(std::make_pair(key, info));
 }
 
 std::optional<HostMemInfo> BlobManager::removeMapping(uint32_t ctxId, uint64_t blobId) {
     auto key = std::make_pair(ctxId, blobId);
+    std::lock_guard<std::mutex> lock(mLock);
     auto found = mHostMemInfos.find(key);
     if (found != mHostMemInfos.end()) {
         std::optional<HostMemInfo> ret = found->second;
@@ -60,12 +62,14 @@
     };
 
     auto key = std::make_pair(ctxId, blobId);
+    std::lock_guard<std::mutex> lock(mLock);
     mDescriptorInfos.insert(std::make_pair(key, std::move(info)));
 }
 
 std::optional<ManagedDescriptorInfo> BlobManager::removeDescriptorInfo(uint32_t ctxId,
                                                                        uint64_t blobId) {
     auto key = std::make_pair(ctxId, blobId);
+    std::lock_guard<std::mutex> lock(mLock);
     auto found = mDescriptorInfos.find(key);
     if (found != mDescriptorInfos.end()) {
         std::optional<ManagedDescriptorInfo> ret = std::move(found->second);
diff --git a/stream-servers/BlobManager.h b/stream-servers/BlobManager.h
index 5620203..b23987c 100644
--- a/stream-servers/BlobManager.h
+++ b/stream-servers/BlobManager.h
@@ -16,6 +16,7 @@
 #include <inttypes.h>
 
 #include <atomic>
+#include <mutex>
 #include <optional>
 #include <unordered_map>
 #include <utility>
@@ -103,6 +104,7 @@
         }
     };
 
+    std::mutex mLock;
     std::unordered_map<std::pair<uint32_t, uint64_t>, HostMemInfo, pair_hash> mHostMemInfos;
     std::unordered_map<std::pair<uint32_t, uint64_t>, ManagedDescriptorInfo, pair_hash>
         mDescriptorInfos;