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
gugelfrei
Emilian Peev 6 years ago
parent fa33327eb3
commit 7f25e5f57f

@ -243,6 +243,7 @@ void CameraService::addStates(const String8 id) {
}
if (mFlashlight->hasFlashUnit(id)) {
Mutex::Autolock al(mTorchStatusMutex);
mTorchStatusMap.add(id, TorchModeStatus::AVAILABLE_OFF);
}
@ -253,6 +254,7 @@ void CameraService::addStates(const String8 id) {
void CameraService::removeStates(const String8 id) {
updateCameraNumAndIds();
if (mFlashlight->hasFlashUnit(id)) {
Mutex::Autolock al(mTorchStatusMutex);
mTorchStatusMap.removeItem(id);
}

Loading…
Cancel
Save