diff options
| author | 2024-02-25 06:44:25 +0000 | |
|---|---|---|
| committer | 2024-02-26 01:49:34 +0000 | |
| commit | 8edf32997655a39a53bb591c4887f53e61cf3362 (patch) | |
| tree | 8a665070df084028c96082f6abd0e2ccaf4aae94 | |
| parent | a7bbb2f8f9ac986c2f55b693d2e4a90d5408250f (diff) | |
Don't synchronize access to PM available features
mAvailableFeatures is never mutated after construction.
It's safe to access concurrently from instance methods.
Change-Id: Ie0bfb8c3d70d981a28e7967df53fb81bd6fb8792
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index dadafd7f9438..3c256b1caa7d 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -721,7 +721,6 @@ public class PackageManagerService implements PackageSender, TestUtilityService PackageManagerInternal.ExternalSourcesPolicy mExternalSourcesPolicy; - @GuardedBy("mAvailableFeatures") private final ArrayMap<String, FeatureInfo> mAvailableFeatures; @Watched @@ -2983,13 +2982,11 @@ public class PackageManagerService implements PackageSender, TestUtilityService public boolean hasSystemFeature(String name, int version) { // allow instant applications - synchronized (mAvailableFeatures) { - final FeatureInfo feat = mAvailableFeatures.get(name); - if (feat == null) { - return false; - } else { - return feat.version >= version; - } + final FeatureInfo feat = mAvailableFeatures.get(name); + if (feat == null) { + return false; + } else { + return feat.version >= version; } } @@ -5335,10 +5332,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService public @NonNull ParceledListSlice<FeatureInfo> getSystemAvailableFeatures() { // allow instant applications ArrayList<FeatureInfo> res; - synchronized (mAvailableFeatures) { - res = new ArrayList<>(mAvailableFeatures.size() + 1); - res.addAll(mAvailableFeatures.values()); - } + res = new ArrayList<>(mAvailableFeatures.size() + 1); + res.addAll(mAvailableFeatures.values()); final FeatureInfo fi = new FeatureInfo(); fi.reqGlEsVersion = SystemProperties.getInt("ro.opengles.version", FeatureInfo.GL_ES_VERSION_UNDEFINED); @@ -6542,9 +6537,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService mOverlayConfigSignaturePackage, mRecentsPackage); final ArrayMap<String, FeatureInfo> availableFeatures; - synchronized (mAvailableFeatures) { - availableFeatures = new ArrayMap<>(mAvailableFeatures); - } + availableFeatures = new ArrayMap<>(mAvailableFeatures); final ArraySet<String> protectedBroadcasts; synchronized (mProtectedBroadcasts) { protectedBroadcasts = new ArraySet<>(mProtectedBroadcasts); |