From 4e47d16509f6289fac34557483271b06cc4255e0 Mon Sep 17 00:00:00 2001 From: Patrick Baumann Date: Wed, 14 Aug 2019 08:20:08 -0700 Subject: [PATCH] Fix locking issue by short-circuiting feature This is a temporary fix to avoid holding the PackageManagerService.mLock while querying the DeviceConfig provider, which then attempts to acquire the same lock. A subsequent CL will provide a correct and longer term fix. Fixes: 139348423 Test: atest AppsFilterTest Change-Id: I4422fbb51d23e276c26cc9d8ba48783e7c5e53ff --- .../java/com/android/server/pm/AppsFilter.java | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/services/core/java/com/android/server/pm/AppsFilter.java b/services/core/java/com/android/server/pm/AppsFilter.java index 7b13720cfc7a2..4431d869af707 100644 --- a/services/core/java/com/android/server/pm/AppsFilter.java +++ b/services/core/java/com/android/server/pm/AppsFilter.java @@ -28,13 +28,11 @@ import android.os.Process; import android.os.RemoteException; import android.os.ServiceManager; import android.permission.IPermissionManager; -import android.provider.DeviceConfig; import android.util.ArraySet; import android.util.Slog; import android.util.SparseArray; import com.android.internal.R; -import com.android.server.FgThread; import java.io.PrintWriter; import java.util.Collections; @@ -135,19 +133,7 @@ class AppsFilter { } IPermissionManager permissionmgr = (IPermissionManager) ServiceManager.getService("permissionmgr"); - return new AppsFilter(() -> { - if (featureEnabled.get() < 0) { - featureEnabled.set(DeviceConfig.getBoolean( - DeviceConfig.NAMESPACE_PACKAGE_MANAGER_SERVICE, - "package_query_filtering_enabled", false) ? 1 : 0); - DeviceConfig.addOnPropertiesChangedListener( - DeviceConfig.NAMESPACE_PACKAGE_MANAGER_SERVICE, - FgThread.getExecutor(), - pr -> featureEnabled.set( - pr.getBoolean("package_query_filtering_enabled", false) ? 1 : 0)); - } - return featureEnabled.get() == 1; - }, permissionmgr, + return new AppsFilter(() -> false, permissionmgr, context.getSystemService(AppOpsManager.class), forcedQueryablePackageNames, forceSystemAppsQueryable); }