summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mohammad Samiul Islam <samiul@google.com> 2020-01-22 12:02:38 +0000
committer Mohammad Samiul Islam <samiul@google.com> 2020-01-22 12:06:13 +0000
commit63672962860ce44fe7e788a37f09180d6da34ebd (patch)
tree47355216e5926ef799de3ff377a48b5267260537
parent595db8a1f3aca45c65e92e8240cafeba13e169f7 (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.java4
-rw-r--r--services/core/java/com/android/server/pm/PackageInstallerSession.java12
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);
}