Merge "Fix race condition is commitCheckpoint" am: 1059810759 am: 556bd755e6 am: 86bc2a32d8

am: 466c1c07dd

Change-Id: Iedcdde19dc54a2a9ee5a1b104f1bcc9c46ca8af7
gugelfrei
Paul Lawrence 5 years ago committed by android-build-merger
commit 18aca481ff

@ -144,9 +144,15 @@ Status cp_startCheckpoint(int retry) {
namespace {
volatile bool isCheckpointing = false;
// Protects isCheckpointing and code that makes decisions based on status of
// isCheckpointing
std::mutex isCheckpointingLock;
}
Status cp_commitChanges() {
std::lock_guard<std::mutex> lock(isCheckpointingLock);
if (!isCheckpointing) {
return Status::ok();
}
@ -261,6 +267,7 @@ bool cp_needsCheckpoint() {
std::string content;
sp<IBootControl> module = IBootControl::getService();
std::lock_guard<std::mutex> lock(isCheckpointingLock);
if (isCheckpointing) return isCheckpointing;
if (module && module->isSlotMarkedSuccessful(module->getCurrentSlot()) == BoolResult::FALSE) {
@ -330,6 +337,7 @@ static void cp_healthDaemon(std::string mnt_pnt, std::string blk_device, bool is
} // namespace
Status cp_prepareCheckpoint() {
std::lock_guard<std::mutex> lock(isCheckpointingLock);
if (!isCheckpointing) {
return Status::ok();
}

Loading…
Cancel
Save