From 1642c147596bcc241875e766b6370eb0dd52709b Mon Sep 17 00:00:00 2001 From: zouxuebin <1593648@qq.com> Date: Thu, 31 Oct 2024 10:41:27 +0800 Subject: [PATCH 1/6] increase sim manager multi-threaded protection Signed-off-by: zouxuebin <1593648@qq.com> --- services/sim/include/sim_manager.h | 1 + services/sim/src/sim_manager.cpp | 3 +++ 2 files changed, 4 insertions(+) diff --git a/services/sim/include/sim_manager.h b/services/sim/include/sim_manager.h index 5773a4c77..ebf1a8f84 100644 --- a/services/sim/include/sim_manager.h +++ b/services/sim/include/sim_manager.h @@ -222,6 +222,7 @@ private: std::shared_ptr monitorRunner_; int32_t slotCount_ = SLOT_ID_ZERO; int32_t dsdsMode_ = DSDS_MODE_V2; + std::mutex mtx_; }; } // namespace Telephony } // namespace OHOS diff --git a/services/sim/src/sim_manager.cpp b/services/sim/src/sim_manager.cpp index 4c572290e..2b7bf6167 100644 --- a/services/sim/src/sim_manager.cpp +++ b/services/sim/src/sim_manager.cpp @@ -44,6 +44,7 @@ bool SimManager::OnInit(int32_t slotCount) void SimManager::InitMultiSimObject() { // Program memory + std::lock_guard lck(mtx_); simStateManager_.resize(slotCount_); simFileManager_.resize(slotCount_); simSmsManager_.resize(slotCount_); @@ -78,6 +79,7 @@ int32_t SimManager::InitTelExtraModule(int32_t slotId) if (slotId != SIM_SLOT_2) { return TELEPHONY_ERROR; } + std::lock_guard lck(mtx_); if (simStateManager_.size() == MAX_SLOT_COUNT) { TELEPHONY_LOGI("SimManager InitTelExtraModule, slotId = %{public}d, has been inited, return.", slotId); return TELEPHONY_SUCCESS; @@ -136,6 +138,7 @@ void SimManager::InitSingleSimObject() int32_t SimManager::HasSimCard(int32_t slotId, bool &hasSimCard) { + std::lock_guard lck(mtx_); if ((!IsValidSlotId(slotId, simStateManager_)) || (simStateManager_[slotId] == nullptr)) { TELEPHONY_LOGE("simStateManager is null!"); return TELEPHONY_ERR_LOCAL_PTR_NULL; From 6caa93e3dfcaf6e24569cc185dd06571d0a64ee6 Mon Sep 17 00:00:00 2001 From: zouxuebin <1593648@qq.com> Date: Fri, 1 Nov 2024 02:44:04 +0000 Subject: [PATCH 2/6] update services/sim/include/sim_manager.h. Signed-off-by: zouxuebin <1593648@qq.com> --- services/sim/include/sim_manager.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/sim/include/sim_manager.h b/services/sim/include/sim_manager.h index ebf1a8f84..20b8fe31c 100644 --- a/services/sim/include/sim_manager.h +++ b/services/sim/include/sim_manager.h @@ -222,7 +222,7 @@ private: std::shared_ptr monitorRunner_; int32_t slotCount_ = SLOT_ID_ZERO; int32_t dsdsMode_ = DSDS_MODE_V2; - std::mutex mtx_; + std::shared_mutex mtx_; }; } // namespace Telephony } // namespace OHOS From c933eabf827e62d30138bdb27ece3e532d5c952c Mon Sep 17 00:00:00 2001 From: zouxuebin <1593648@qq.com> Date: Fri, 1 Nov 2024 02:45:08 +0000 Subject: [PATCH 3/6] update services/sim/src/sim_manager.cpp. Signed-off-by: zouxuebin <1593648@qq.com> --- services/sim/src/sim_manager.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/sim/src/sim_manager.cpp b/services/sim/src/sim_manager.cpp index 2b7bf6167..feb5cccdf 100644 --- a/services/sim/src/sim_manager.cpp +++ b/services/sim/src/sim_manager.cpp @@ -44,7 +44,7 @@ bool SimManager::OnInit(int32_t slotCount) void SimManager::InitMultiSimObject() { // Program memory - std::lock_guard lck(mtx_); + std::lock_guard lck(mtx_); simStateManager_.resize(slotCount_); simFileManager_.resize(slotCount_); simSmsManager_.resize(slotCount_); @@ -79,7 +79,7 @@ int32_t SimManager::InitTelExtraModule(int32_t slotId) if (slotId != SIM_SLOT_2) { return TELEPHONY_ERROR; } - std::lock_guard lck(mtx_); + std::lock_guard lck(mtx_); if (simStateManager_.size() == MAX_SLOT_COUNT) { TELEPHONY_LOGI("SimManager InitTelExtraModule, slotId = %{public}d, has been inited, return.", slotId); return TELEPHONY_SUCCESS; @@ -138,7 +138,7 @@ void SimManager::InitSingleSimObject() int32_t SimManager::HasSimCard(int32_t slotId, bool &hasSimCard) { - std::lock_guard lck(mtx_); + std::shared_lock lock(mtx_); if ((!IsValidSlotId(slotId, simStateManager_)) || (simStateManager_[slotId] == nullptr)) { TELEPHONY_LOGE("simStateManager is null!"); return TELEPHONY_ERR_LOCAL_PTR_NULL; From 92157ffb5cae931f592d0d4bf85a2ec4a3a120ff Mon Sep 17 00:00:00 2001 From: zouxuebin <1593648@qq.com> Date: Fri, 1 Nov 2024 06:27:50 +0000 Subject: [PATCH 4/6] update services/sim/src/sim_manager.cpp. Signed-off-by: zouxuebin <1593648@qq.com> --- services/sim/src/sim_manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/sim/src/sim_manager.cpp b/services/sim/src/sim_manager.cpp index feb5cccdf..9b6fe52c0 100644 --- a/services/sim/src/sim_manager.cpp +++ b/services/sim/src/sim_manager.cpp @@ -138,7 +138,7 @@ void SimManager::InitSingleSimObject() int32_t SimManager::HasSimCard(int32_t slotId, bool &hasSimCard) { - std::shared_lock lock(mtx_); + std::shared_lock lck(mtx_); if ((!IsValidSlotId(slotId, simStateManager_)) || (simStateManager_[slotId] == nullptr)) { TELEPHONY_LOGE("simStateManager is null!"); return TELEPHONY_ERR_LOCAL_PTR_NULL; From 2203ce00c56889dafbd2b93fcecf06462b30e778 Mon Sep 17 00:00:00 2001 From: zouxuebin <1593648@qq.com> Date: Fri, 1 Nov 2024 15:47:34 +0800 Subject: [PATCH 5/6] dialling numbers ext optimize Signed-off-by: zouxuebin <1593648@qq.com> --- services/sim/src/icc_dialling_numbers_handler.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/services/sim/src/icc_dialling_numbers_handler.cpp b/services/sim/src/icc_dialling_numbers_handler.cpp index 05eb72ce1..9ea8eb48f 100644 --- a/services/sim/src/icc_dialling_numbers_handler.cpp +++ b/services/sim/src/icc_dialling_numbers_handler.cpp @@ -293,7 +293,6 @@ void IccDiallingNumbersHandler::ProcessExtensionRecordNumbers(const AppExecFwk:: return; } if (fd->exception != nullptr) { - loadRequest->SetException(fd->exception); TELEPHONY_LOGE("IccDiallingNumbersHandler::ProcessExtensionRecordNumbers load failed with exception"); return; } From ec045abf9c4169bc7138459123e9827ea6f97a77 Mon Sep 17 00:00:00 2001 From: zouxuebin <1593648@qq.com> Date: Fri, 1 Nov 2024 16:01:05 +0800 Subject: [PATCH 6/6] dialling numbers ext optimize Signed-off-by: zouxuebin <1593648@qq.com> --- services/sim/include/sim_manager.h | 1 - services/sim/src/sim_manager.cpp | 3 --- 2 files changed, 4 deletions(-) diff --git a/services/sim/include/sim_manager.h b/services/sim/include/sim_manager.h index 20b8fe31c..5773a4c77 100644 --- a/services/sim/include/sim_manager.h +++ b/services/sim/include/sim_manager.h @@ -222,7 +222,6 @@ private: std::shared_ptr monitorRunner_; int32_t slotCount_ = SLOT_ID_ZERO; int32_t dsdsMode_ = DSDS_MODE_V2; - std::shared_mutex mtx_; }; } // namespace Telephony } // namespace OHOS diff --git a/services/sim/src/sim_manager.cpp b/services/sim/src/sim_manager.cpp index 9b6fe52c0..4c572290e 100644 --- a/services/sim/src/sim_manager.cpp +++ b/services/sim/src/sim_manager.cpp @@ -44,7 +44,6 @@ bool SimManager::OnInit(int32_t slotCount) void SimManager::InitMultiSimObject() { // Program memory - std::lock_guard lck(mtx_); simStateManager_.resize(slotCount_); simFileManager_.resize(slotCount_); simSmsManager_.resize(slotCount_); @@ -79,7 +78,6 @@ int32_t SimManager::InitTelExtraModule(int32_t slotId) if (slotId != SIM_SLOT_2) { return TELEPHONY_ERROR; } - std::lock_guard lck(mtx_); if (simStateManager_.size() == MAX_SLOT_COUNT) { TELEPHONY_LOGI("SimManager InitTelExtraModule, slotId = %{public}d, has been inited, return.", slotId); return TELEPHONY_SUCCESS; @@ -138,7 +136,6 @@ void SimManager::InitSingleSimObject() int32_t SimManager::HasSimCard(int32_t slotId, bool &hasSimCard) { - std::shared_lock lck(mtx_); if ((!IsValidSlotId(slotId, simStateManager_)) || (simStateManager_[slotId] == nullptr)) { TELEPHONY_LOGE("simStateManager is null!"); return TELEPHONY_ERR_LOCAL_PTR_NULL;