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
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user