From 015df962d5716c00e3484a65a2b0315fc2978dad Mon Sep 17 00:00:00 2001 From: Michal Karpinski Date: Fri, 7 Jul 2017 15:30:50 +0100 Subject: [PATCH] Eliminate a race condition that could lead to calling PBT#finalizeBackup() twice Calling finalizeBackup() the second time will most probably lead to underholding the wakelock and system crash. Bug: 63156509 Test: manual Change-Id: Ic995ba4a65d749b80bf1f1d226d35a279a0d1b25 --- .../com/android/server/backup/BackupManagerService.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java index e3da4eb1628f7..4a7eef930f65e 100644 --- a/services/backup/java/com/android/server/backup/BackupManagerService.java +++ b/services/backup/java/com/android/server/backup/BackupManagerService.java @@ -2822,11 +2822,11 @@ public class BackupManagerService implements BackupManagerServiceInterface { break; case FINAL: - if (!mFinished) finalizeBackup(); - else { - Slog.e(TAG, "Duplicate finish"); + if (!mFinished) { + finalizeBackup(); + } else { + Slog.e(TAG, "Duplicate finish of K/V pass"); } - mFinished = true; break; } } @@ -3180,6 +3180,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { break; } } + mFinished = true; Slog.i(BackupManagerService.TAG, "K/V backup pass finished."); // Only once we're entirely finished do we release the wakelock for k/v backup. mWakelock.release();