diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-09-13 23:23:01 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-09-13 23:23:01 +0000 |
commit | 435a046b3bef8555b6e3650f366e381fed2c8ae0 (patch) | |
tree | 37505ece70596555ab809612c28053aae4c66b02 | |
parent | cb80f5301e6b97e3693d9caa8b9eb641ef751f81 (diff) | |
parent | 1814bb4b82f3e1915da8b2547fa6cab4aee6d7c1 (diff) | |
download | update_engine-android-14.0.0_r18.tar.gz |
Snap for 10804332 from 1814bb4b82f3e1915da8b2547fa6cab4aee6d7c1 to udc-qpr1-releaseandroid-14.0.0_r27android-14.0.0_r26android-14.0.0_r25android-14.0.0_r24android-14.0.0_r23android-14.0.0_r22android-14.0.0_r21android-14.0.0_r20android-14.0.0_r19android-14.0.0_r18android-14.0.0_r17android-14.0.0_r16android14-qpr1-s2-releaseandroid14-qpr1-release
Change-Id: I097bfab0216fa003add9a2db95ff21127f57b552
-rw-r--r-- | aosp/hardware_android.cc | 5 | ||||
-rw-r--r-- | payload_consumer/filesystem_verifier_action.cc | 7 | ||||
-rw-r--r-- | payload_consumer/filesystem_verifier_action_unittest.cc | 7 | ||||
-rw-r--r-- | payload_consumer/postinstall_runner_action.cc | 7 |
4 files changed, 18 insertions, 8 deletions
diff --git a/aosp/hardware_android.cc b/aosp/hardware_android.cc index 624cfc99..f8732abd 100644 --- a/aosp/hardware_android.cc +++ b/aosp/hardware_android.cc @@ -85,7 +85,7 @@ void SetVbmetaDigestProp(const std::string& value) { } std::string CalculateVbmetaDigestForInactiveSlot() { - AvbSlotVerifyData* avb_slot_data; + AvbSlotVerifyData* avb_slot_data{}; auto suffix = fs_mgr_get_other_slot_suffix(); const char* requested_partitions[] = {nullptr}; @@ -105,8 +105,9 @@ std::string CalculateVbmetaDigestForInactiveSlot() { avb_slot_verify_data_calculate_vbmeta_digest( avb_slot_data, AVB_DIGEST_TYPE_SHA256, vbmeta_digest); - std::string encoded_digest = + const std::string encoded_digest = base::HexEncode(vbmeta_digest, AVB_SHA256_DIGEST_SIZE); + LOG(INFO) << "vbmeta digest for target slot: " << encoded_digest; return base::ToLowerASCII(encoded_digest); } diff --git a/payload_consumer/filesystem_verifier_action.cc b/payload_consumer/filesystem_verifier_action.cc index dfbe5137..abfae729 100644 --- a/payload_consumer/filesystem_verifier_action.cc +++ b/payload_consumer/filesystem_verifier_action.cc @@ -136,6 +136,13 @@ void FilesystemVerifierAction::Cleanup(ErrorCode code) { partition_fd_.reset(); // This memory is not used anymore. buffer_.clear(); + if (code == ErrorCode::kSuccess && !cancelled_) { + if (!dynamic_control_->FinishUpdate(install_plan_.powerwash_required)) { + LOG(ERROR) << "Failed to FinishUpdate(" + << install_plan_.powerwash_required << ")"; + code = ErrorCode::kFilesystemVerifierError; + } + } // If we didn't write verity, partitions were maped. Releaase resource now. if (!install_plan_.write_verity && diff --git a/payload_consumer/filesystem_verifier_action_unittest.cc b/payload_consumer/filesystem_verifier_action_unittest.cc index b2ed158e..3c3997da 100644 --- a/payload_consumer/filesystem_verifier_action_unittest.cc +++ b/payload_consumer/filesystem_verifier_action_unittest.cc @@ -32,6 +32,7 @@ #include <libsnapshot/snapshot_writer.h> #include <sys/stat.h> +#include "gmock/gmock-spec-builders.h" #include "update_engine/common/dynamic_partition_control_stub.h" #include "update_engine/common/hash_calculator.h" #include "update_engine/common/mock_dynamic_partition_control.h" @@ -556,12 +557,13 @@ void FilesystemVerifierActionTest::DoTestVABC(bool clear_target_hash, install_plan_.write_verity = true; ASSERT_NO_FATAL_FAILURE(SetHashWithVerity(&part)); } + NiceMock<MockDynamicPartitionControl> dynamic_control; if (clear_target_hash) { part.target_hash.clear(); + } else { + EXPECT_CALL(dynamic_control, FinishUpdate(0)).WillOnce(Return(true)); } - NiceMock<MockDynamicPartitionControl> dynamic_control; - EnableVABC(&dynamic_control, part.name); auto open_cow = [part]() { auto cow_fd = std::make_unique<EintrSafeFileDescriptor>(); @@ -661,6 +663,7 @@ TEST_F(FilesystemVerifierActionTest, VABC_Verity_ReadAfterWrite) { part.readonly_target_path = target_part_.path(); NiceMock<MockDynamicPartitionControl> dynamic_control; EnableVABC(&dynamic_control, part.name); + ON_CALL(dynamic_control, FinishUpdate(_)).WillByDefault(Return(true)); // b/186196758 is only visible if we repeatedely run FS verification w/o // writing verity diff --git a/payload_consumer/postinstall_runner_action.cc b/payload_consumer/postinstall_runner_action.cc index a6fa4b30..fa4654df 100644 --- a/payload_consumer/postinstall_runner_action.cc +++ b/payload_consumer/postinstall_runner_action.cc @@ -109,7 +109,7 @@ void PostinstallRunnerAction::PerformAction() { auto dynamic_control = boot_control_->GetDynamicPartitionControl(); CHECK(dynamic_control); - // Mount snapshot partitions for Virtual AB Compression Compression. + // Mount snapshot partitions for Virtual AB Compression if (dynamic_control->UpdateUsesSnapshotCompression()) { // Before calling MapAllPartitions to map snapshot devices, all CowWriters // must be closed, and MapAllPartitions() should be called. @@ -434,9 +434,8 @@ void PostinstallRunnerAction::CompletePostinstall(ErrorCode error_code) { // steps succeeded. if (error_code == ErrorCode::kSuccess) { if (install_plan_.switch_slot_on_reboot) { - if (!boot_control_->GetDynamicPartitionControl()->FinishUpdate( - install_plan_.powerwash_required) || - !boot_control_->SetActiveBootSlot(install_plan_.target_slot)) { + if (!boot_control_->SetActiveBootSlot(install_plan_.target_slot)) { + LOG(ERROR) << "Failed to switch slot to " << install_plan_.target_slot; error_code = ErrorCode::kPostinstallRunnerError; } else { // Schedules warm reset on next reboot, ignores the error. |