From cc0ab6d75b7bef33864b8aadc1beeedc592e829e Mon Sep 17 00:00:00 2001 From: "Olha Vorobiova (GitHub)" <86727408+OlhaVorobiova@users.noreply.github.com> Date: Tue, 28 Jun 2022 15:16:45 +0200 Subject: Added a lock in StartPTExchange (#3921) --- .../policy/policy_external/include/policy/policy_manager_impl.h | 5 +++++ src/components/policy/policy_external/src/policy_manager_impl.cc | 3 +++ .../policy/policy_regular/include/policy/policy_manager_impl.h | 5 +++++ src/components/policy/policy_regular/src/policy_manager_impl.cc | 3 +++ 4 files changed, 16 insertions(+) (limited to 'src/components') diff --git a/src/components/policy/policy_external/include/policy/policy_manager_impl.h b/src/components/policy/policy_external/include/policy/policy_manager_impl.h index 7822cc26f6..720f2e590f 100644 --- a/src/components/policy/policy_external/include/policy/policy_manager_impl.h +++ b/src/components/policy/policy_external/include/policy/policy_manager_impl.h @@ -1270,6 +1270,11 @@ class PolicyManagerImpl : public PolicyManager { */ sync_primitives::Lock policy_table_lock_; + /** + * @brief lock guard for protecting policy table exchange + */ + sync_primitives::Lock policy_table_exchange_lock_; + /** * @brief lock guard for protecting application permissions access */ diff --git a/src/components/policy/policy_external/src/policy_manager_impl.cc b/src/components/policy/policy_external/src/policy_manager_impl.cc index 60ab5a389e..1cf556946c 100644 --- a/src/components/policy/policy_external/src/policy_manager_impl.cc +++ b/src/components/policy/policy_external/src/policy_manager_impl.cc @@ -747,6 +747,9 @@ void PolicyManagerImpl::StartPTExchange() { return; } + sync_primitives::AutoLock policy_table_exchange_lock( + policy_table_exchange_lock_); + if (update_status_manager_.IsUpdatePending()) { if (trigger_ptu_) { update_status_manager_.ScheduleUpdate(); diff --git a/src/components/policy/policy_regular/include/policy/policy_manager_impl.h b/src/components/policy/policy_regular/include/policy/policy_manager_impl.h index 16ab9417bb..ac57738ca0 100644 --- a/src/components/policy/policy_regular/include/policy/policy_manager_impl.h +++ b/src/components/policy/policy_regular/include/policy/policy_manager_impl.h @@ -1107,6 +1107,11 @@ class PolicyManagerImpl : public PolicyManager { */ sync_primitives::Lock policy_table_lock_; + /** + * @brief lock guard for protecting policy table exchange + */ + sync_primitives::Lock policy_table_exchange_lock_; + /** * @brief lock guard for protecting application permissions access */ diff --git a/src/components/policy/policy_regular/src/policy_manager_impl.cc b/src/components/policy/policy_regular/src/policy_manager_impl.cc index ccc3454708..b80367b647 100644 --- a/src/components/policy/policy_regular/src/policy_manager_impl.cc +++ b/src/components/policy/policy_regular/src/policy_manager_impl.cc @@ -629,6 +629,9 @@ void PolicyManagerImpl::StartPTExchange() { return; } + sync_primitives::AutoLock policy_table_exchange_lock( + policy_table_exchange_lock_); + if (update_status_manager_.IsUpdatePending() && update_required) { if (trigger_ptu_) update_status_manager_.ScheduleUpdate(); -- cgit v1.2.1