summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Songchun Fan <schfan@google.com> 2022-03-04 17:04:23 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-03-04 17:04:23 +0000
commitf61691052ef26dc7da50e10c109989d1e4961ab6 (patch)
treedbdf8052a93203a6fade40a9f2260abc59a9abad
parentf862bd9ec15522edf7d2ce71965f427f62207e1a (diff)
parent8763e6ba11a62edb24687cc77f36b4b3b84882c9 (diff)
Merge "[pm] do not call prepareAppDataAfterInstallLIF from inside mLock" into tm-dev
-rw-r--r--services/core/java/com/android/server/pm/InstallPackageHelper.java50
1 files changed, 25 insertions, 25 deletions
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java
index a780f3c7eac5..c5c39f82a1fd 100644
--- a/services/core/java/com/android/server/pm/InstallPackageHelper.java
+++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java
@@ -2988,7 +2988,6 @@ final class InstallPackageHelper {
* APK will be installed and the package will be disabled. To recover from this situation,
* the user will need to go into system settings and re-enable the package.
*/
- @GuardedBy({"mPm.mLock", "mPm.mInstallLock"})
boolean enableCompressedPackage(AndroidPackage stubPkg,
@NonNull PackageSetting stubPkgSetting) {
final int parseFlags = mPm.getDefParseFlags() | ParsingPackageUtils.PARSE_CHATTY
@@ -2998,8 +2997,8 @@ final class InstallPackageHelper {
try (PackageFreezer freezer =
mPm.freezePackage(stubPkg.getPackageName(), "setEnabledSetting")) {
pkg = installStubPackageLI(stubPkg, parseFlags, 0 /*scanFlags*/);
+ mAppDataHelper.prepareAppDataAfterInstallLIF(pkg);
synchronized (mPm.mLock) {
- mAppDataHelper.prepareAppDataAfterInstallLIF(pkg);
try {
mSharedLibraries.updateSharedLibrariesLPw(
pkg, stubPkgSetting, null, null,
@@ -3056,7 +3055,7 @@ final class InstallPackageHelper {
return true;
}
- @GuardedBy({"mPm.mLock", "mPm.mInstallLock"})
+ @GuardedBy("mPm.mInstallLock")
private AndroidPackage installStubPackageLI(AndroidPackage stubPkg,
@ParsingPackageUtils.ParseFlags int parseFlags,
@PackageManagerService.ScanFlags int scanFlags)
@@ -3149,27 +3148,28 @@ final class InstallPackageHelper {
mPm.mSettings.enableSystemPackageLPw(disabledPs.getPkg().getPackageName());
// Remove any native libraries from the upgraded package.
PackageManagerServiceUtils.removeNativeBinariesLI(deletedPs);
-
- // Install the system package
- if (DEBUG_REMOVE) Slog.d(TAG, "Re-installing system package: " + disabledPs);
- try {
- synchronized (mPm.mInstallLock) {
- final int[] origUsers = outInfo == null ? null : outInfo.mOrigUsers;
- final int previousAppId = disabledPs.getAppId() != deletedPs.getAppId()
- ? deletedPs.getAppId() : Process.INVALID_UID;
- installPackageFromSystemLIF(disabledPs.getPathString(), allUserHandles,
- origUsers, writeSettings, previousAppId);
- }
- } catch (PackageManagerException e) {
- Slog.w(TAG, "Failed to restore system package:" + deletedPs.getPackageName() + ": "
- + e.getMessage());
- // TODO(b/194319951): can we avoid this; throw would come from scan...
- throw new SystemDeleteException(e);
- } finally {
- if (disabledPs.getPkg().isStub()) {
- // We've re-installed the stub; make sure it's disabled here. If package was
- // originally enabled, we'll install the compressed version of the application
- // and re-enable it afterward.
+ }
+ // Install the system package
+ if (DEBUG_REMOVE) Slog.d(TAG, "Re-installing system package: " + disabledPs);
+ try {
+ synchronized (mPm.mInstallLock) {
+ final int[] origUsers = outInfo == null ? null : outInfo.mOrigUsers;
+ final int previousAppId = disabledPs.getAppId() != deletedPs.getAppId()
+ ? deletedPs.getAppId() : Process.INVALID_UID;
+ installPackageFromSystemLIF(disabledPs.getPathString(), allUserHandles,
+ origUsers, writeSettings, previousAppId);
+ }
+ } catch (PackageManagerException e) {
+ Slog.w(TAG, "Failed to restore system package:" + deletedPs.getPackageName() + ": "
+ + e.getMessage());
+ // TODO(b/194319951): can we avoid this; throw would come from scan...
+ throw new SystemDeleteException(e);
+ } finally {
+ if (disabledPs.getPkg().isStub()) {
+ // We've re-installed the stub; make sure it's disabled here. If package was
+ // originally enabled, we'll install the compressed version of the application
+ // and re-enable it afterward.
+ synchronized (mPm.mLock) {
disableStubPackage(action, deletedPs, allUserHandles);
}
}
@@ -3197,7 +3197,7 @@ final class InstallPackageHelper {
/**
* Installs a package that's already on the system partition.
*/
- @GuardedBy({"mPm.mLock", "mPm.mInstallLock"})
+ @GuardedBy("mPm.mInstallLock")
private void installPackageFromSystemLIF(@NonNull String codePathString,
@NonNull int[] allUserHandles, @Nullable int[] origUserHandles,
boolean writeSettings, int previousAppId)