From 33fb4ef029f2ba1771eeb76f2ea9e2854c852df7 Mon Sep 17 00:00:00 2001 From: Daniel Colascione Date: Wed, 4 Mar 2020 17:27:56 -0800 Subject: [PATCH] RESTRICT AUTOMERGE: Cork permission and package cache around bulk permission update Test: watch with DEBUG=true Bug: 149255086 Bug: 140788621 Change-Id: I32f9b89ae1aaa718ef0eef7bc668cdef49ade151 --- .../pm/permission/PermissionManagerService.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index b7c9ecb604f8d..8555e28d9f0f7 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -3901,11 +3901,16 @@ public class PermissionManagerService extends IPermissionManager.Stub { */ private void updateAllPermissions(@Nullable String volumeUuid, boolean sdkUpdated, @NonNull PermissionCallback callback) { - final int flags = UPDATE_PERMISSIONS_ALL | - (sdkUpdated - ? UPDATE_PERMISSIONS_REPLACE_PKG | UPDATE_PERMISSIONS_REPLACE_ALL - : 0); - updatePermissions(null, null, volumeUuid, flags, callback); + PackageManager.corkPackageInfoCache(); // Prevent invalidation storm + try { + final int flags = UPDATE_PERMISSIONS_ALL | + (sdkUpdated + ? UPDATE_PERMISSIONS_REPLACE_PKG | UPDATE_PERMISSIONS_REPLACE_ALL + : 0); + updatePermissions(null, null, volumeUuid, flags, callback); + } finally { + PackageManager.uncorkPackageInfoCache(); + } } /**