Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4e47d165 authored by Patrick Baumann's avatar Patrick Baumann
Browse files

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
parent 5cc1472d
Loading
Loading
Loading
Loading
+1 −15
Original line number Diff line number Diff line
@@ -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);
    }