Camera: Synchronize access to torch status map

'add-/removeStates()' can modify the torch status map
without holding the necessary 'mTorchStatusMutex'. Any
such modification could theoretically access or
contribute to an inconsistent state of the torch status
map. To avoid any possible data race conditions, always
try to acquire 'mTorchStatusMutex' first.

Bug: 77531948
Test: Camera CTS
Change-Id: Ic135d450d4d32224964eabceb24718e03a439fc3
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
index 714d50f..c87b5eb 100644
--- a/services/camera/libcameraservice/CameraService.cpp
+++ b/services/camera/libcameraservice/CameraService.cpp
@@ -243,6 +243,7 @@
     }
 
     if (mFlashlight->hasFlashUnit(id)) {
+        Mutex::Autolock al(mTorchStatusMutex);
         mTorchStatusMap.add(id, TorchModeStatus::AVAILABLE_OFF);
     }
 
@@ -253,6 +254,7 @@
 void CameraService::removeStates(const String8 id) {
     updateCameraNumAndIds();
     if (mFlashlight->hasFlashUnit(id)) {
+        Mutex::Autolock al(mTorchStatusMutex);
         mTorchStatusMap.removeItem(id);
     }