From 5ff4de58c8cd869e93e066aa1f8ece8e1a4c1cfe Mon Sep 17 00:00:00 2001 From: Winson Chiu Date: Wed, 14 Sep 2022 20:45:27 +0000 Subject: [PATCH] Do not hold InstantAppRegistry lock when deleting package This looks to be a refactor mistake. The lock doesn't need to be taken in order to call into DeletePackageHelper. Bug: 246714055 Test: presubmit Change-Id: Ia7d0f89083de3a19a84faaca849f9acde8f4a632 --- .../android/server/pm/InstantAppRegistry.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/services/core/java/com/android/server/pm/InstantAppRegistry.java b/services/core/java/com/android/server/pm/InstantAppRegistry.java index 71bd2d7be964a..bedc12a1d81f0 100644 --- a/services/core/java/com/android/server/pm/InstantAppRegistry.java +++ b/services/core/java/com/android/server/pm/InstantAppRegistry.java @@ -879,22 +879,22 @@ public class InstantAppRegistry implements Watchable, Snappable { }); } - synchronized (mLock) { - if (packagesToDelete != null) { - final int packageCount = packagesToDelete.size(); - for (int i = 0; i < packageCount; i++) { - final String packageToDelete = packagesToDelete.get(i); - if (mDeletePackageHelper.deletePackageX(packageToDelete, - PackageManager.VERSION_CODE_HIGHEST, - UserHandle.USER_SYSTEM, PackageManager.DELETE_ALL_USERS, - true /*removedBySystem*/) == PackageManager.DELETE_SUCCEEDED) { - if (file.getUsableSpace() >= neededSpace) { - return true; - } + if (packagesToDelete != null) { + final int packageCount = packagesToDelete.size(); + for (int i = 0; i < packageCount; i++) { + final String packageToDelete = packagesToDelete.get(i); + if (mDeletePackageHelper.deletePackageX(packageToDelete, + PackageManager.VERSION_CODE_HIGHEST, + UserHandle.USER_SYSTEM, PackageManager.DELETE_ALL_USERS, + true /*removedBySystem*/) == PackageManager.DELETE_SUCCEEDED) { + if (file.getUsableSpace() >= neededSpace) { + return true; } } } + } + synchronized (mLock) { // Prune uninstalled instant apps // TODO: Track last used time for uninstalled instant apps for better pruning for (int userId : mUserManager.getUserIds()) {