From ede47c927ef125fa9507ab95a09dbf785d5cb534 Mon Sep 17 00:00:00 2001 From: Gavin Corkery Date: Tue, 17 Dec 2019 22:36:56 +0000 Subject: [PATCH] Move build fingerprint check outside of main loop Per discussion in ag/9915756, call PM.isDeviceUpgrading once outside of the main loop when restoring staged sessions. Test: atest StagedInstallTest#testInstallApkChangingFingerprint Bug: 140992644 Change-Id: I65ac48e49364706857670dee96e47584c3a19295 --- .../java/com/android/server/pm/PackageInstallerService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java index dceca0a749e33..1adf7b306304f 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerService.java +++ b/services/core/java/com/android/server/pm/PackageInstallerService.java @@ -257,8 +257,9 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements } // Don't hold mSessions lock when calling restoreSession, since it might trigger an APK // atomic install which needs to query sessions, which requires lock on mSessions. + boolean isDeviceUpgrading = mPm.isDeviceUpgrading(); for (PackageInstallerSession session : stagedSessionsToRestore) { - if (mPm.isDeviceUpgrading() && !session.isStagedAndInTerminalState()) { + if (isDeviceUpgrading && !session.isStagedAndInTerminalState()) { session.setStagedSessionFailed(SessionInfo.STAGED_SESSION_ACTIVATION_FAILED, "Build fingerprint has changed"); }