diff options
| author | 2020-01-22 12:02:38 +0000 | |
|---|---|---|
| committer | 2020-01-22 12:06:13 +0000 | |
| commit | 63672962860ce44fe7e788a37f09180d6da34ebd (patch) | |
| tree | 47355216e5926ef799de3ff377a48b5267260537 | |
| parent | 595db8a1f3aca45c65e92e8240cafeba13e169f7 (diff) | |
Revert "Re-seal the sessions on reboot."
This reverts commit 595db8a1f3aca45c65e92e8240cafeba13e169f7.
Reason for revert: b/147985998
Bug: 147985998
Test: StagedRollbackTest#testRollbackApexWithApk
Change-Id: I0f2b2dfb82aa7535f7fe9d4011f07fdb80f9e383
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageInstallerService.java | 4 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageInstallerSession.java | 12 |
2 files changed, 10 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java index b1c38d1ebed4..6331dd46c035 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerService.java +++ b/services/core/java/com/android/server/pm/PackageInstallerService.java @@ -400,10 +400,10 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements } finally { IoUtils.closeQuietly(fis); } - // Re-sealing the sealed sessions. + // After all of the sessions were loaded, they are ready to be sealed and validated for (int i = 0; i < mSessions.size(); ++i) { PackageInstallerSession session = mSessions.valueAt(i); - session.sealIfNecessary(); + session.sealAndValidateIfNecessary(); } } diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java index 71555c98f9d2..165bdebe070f 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerSession.java +++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java @@ -1374,13 +1374,15 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } /** - * If session should be sealed, then it's sealed to prevent further modification. - * If the session can't be sealed then it's destroyed. + * If session should be sealed, then it's sealed to prevent further modification + * and then it's validated. + * + * If the session was sealed but something went wrong then it's destroyed. * * <p> This is meant to be called after all of the sessions are loaded and added to * PackageInstallerService */ - void sealIfNecessary() { + void sealAndValidateIfNecessary() { synchronized (mLock) { if (!mShouldBeSealed || isStagedAndInTerminalState()) { return; @@ -1389,7 +1391,9 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { List<PackageInstallerSession> childSessions = getChildSessions(); synchronized (mLock) { try { - sealLocked(childSessions); + sealAndValidateLocked(childSessions); + } catch (StreamingException e) { + Slog.e(TAG, "Streaming failed", e); } catch (PackageManagerException e) { Slog.e(TAG, "Package not valid", e); } |