summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author JW Wang <wangchun@google.com> 2021-02-01 10:47:49 +0800
committer JW Wang <wangchun@google.com> 2021-02-01 12:40:21 +0800
commitdc10cf0b09734e9996a8a8f12a6423f4f52c6f3e (patch)
treef66e02ad138816b85ef6a807b5cf124f6696aea3
parent07c28cceeaf5e2944c900a5de6971a8574ee4d6c (diff)
Fix insufficient synchronization (8/n)
mSyncRequired must be accessed within the lock. Bug: 178675924 Test: atest PackageWatchdogTest Change-Id: Ie975e5910de53af670862de48ccf0cd4eeff0184
-rw-r--r--services/core/java/com/android/server/PackageWatchdog.java12
1 files changed, 8 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/PackageWatchdog.java b/services/core/java/com/android/server/PackageWatchdog.java
index 61cbe17c531c..6a53dd6ed3bd 100644
--- a/services/core/java/com/android/server/PackageWatchdog.java
+++ b/services/core/java/com/android/server/PackageWatchdog.java
@@ -259,10 +259,7 @@ public class PackageWatchdog {
mIsPackagesReady = true;
mHealthCheckController.setCallbacks(packageName -> onHealthCheckPassed(packageName),
packages -> onSupportedPackages(packages),
- () -> {
- mSyncRequired = true;
- syncRequestsAsync();
- });
+ this::onSyncRequestNotified);
setPropertyChangedListenerLocked();
updateConfigs();
registerConnectivityModuleHealthListener();
@@ -789,6 +786,13 @@ public class PackageWatchdog {
}
}
+ private void onSyncRequestNotified() {
+ synchronized (mLock) {
+ mSyncRequired = true;
+ syncRequestsAsync();
+ }
+ }
+
@GuardedBy("mLock")
private Set<String> getPackagesPendingHealthChecksLocked() {
Set<String> packages = new ArraySet<>();