summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/am/ProcessList.java20
1 files changed, 20 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java
index 2def50efee60..1ad0bcea711c 100644
--- a/services/core/java/com/android/server/am/ProcessList.java
+++ b/services/core/java/com/android/server/am/ProcessList.java
@@ -135,6 +135,7 @@ import com.android.server.Watchdog;
import com.android.server.am.ActivityManagerService.ProcessChangeItem;
import com.android.server.compat.PlatformCompat;
import com.android.server.pm.dex.DexManager;
+import com.android.server.pm.parsing.pkg.AndroidPackage;
import com.android.server.pm.pkg.PackageStateInternal;
import com.android.server.wm.ActivityServiceConnectionsHolder;
import com.android.server.wm.WindowManagerService;
@@ -2379,6 +2380,8 @@ public final class ProcessList {
final String[] targetPackagesList = sharedPackages.length == 0
? new String[]{app.info.packageName} : sharedPackages;
+ final boolean hasAppStorage = hasAppStorage(pmInt, app.info.packageName);
+
pkgDataInfoMap = getPackageAppDataInfoMap(pmInt, targetPackagesList, uid);
if (pkgDataInfoMap == null) {
// TODO(b/152760674): Handle inode == 0 case properly, now we just give it a
@@ -2401,6 +2404,12 @@ public final class ProcessList {
bindMountAppsData = false;
}
+ if (!hasAppStorage) {
+ bindMountAppsData = false;
+ pkgDataInfoMap = null;
+ allowlistedAppDataInfoMap = null;
+ }
+
int userId = UserHandle.getUserId(uid);
StorageManagerInternal storageManagerInternal = LocalServices.getService(
StorageManagerInternal.class);
@@ -2488,6 +2497,17 @@ public final class ProcessList {
}
}
+ private boolean hasAppStorage(PackageManagerInternal pmInt, String packageName) {
+ final AndroidPackage pkg = pmInt.getPackage(packageName);
+ if (pkg == null) {
+ Slog.w(TAG, "Unknown package " + packageName);
+ return false;
+ }
+ final PackageManager.Property noAppStorageProp =
+ pkg.getProperties().get(PackageManager.PROPERTY_NO_APP_DATA_STORAGE);
+ return noAppStorageProp == null || !noAppStorageProp.getBoolean();
+ }
+
@GuardedBy("mService")
void startProcessLocked(ProcessRecord app, HostingRecord hostingRecord, int zygotePolicyFlags) {
startProcessLocked(app, hostingRecord, zygotePolicyFlags, null /* abiOverride */);