Skip to content

Commit

Permalink
Merge "fastbootd: Only flash slots listed by the boot control HAL."
Browse files Browse the repository at this point in the history
  • Loading branch information
Treehugger Robot authored and Gerrit Code Review committed Dec 18, 2018
2 parents 41e83c3 + 4d307b0 commit 8fd4435
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 6 deletions.
6 changes: 4 additions & 2 deletions fastboot/device/commands.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -329,12 +329,14 @@ class PartitionBuilder {
MetadataBuilder* operator->() const { return builder_.get(); }

private:
FastbootDevice* device_;
std::string super_device_;
uint32_t slot_number_;
std::unique_ptr<MetadataBuilder> builder_;
};

PartitionBuilder::PartitionBuilder(FastbootDevice* device, const std::string& partition_name) {
PartitionBuilder::PartitionBuilder(FastbootDevice* device, const std::string& partition_name)
: device_(device) {
std::string slot_suffix = GetSuperSlotSuffix(device, partition_name);
slot_number_ = SlotNumberForSlotSuffix(slot_suffix);
auto super_device = FindPhysicalPartition(fs_mgr_get_super_partition_name(slot_number_));
Expand All @@ -350,7 +352,7 @@ bool PartitionBuilder::Write() {
if (!metadata) {
return false;
}
return UpdateAllPartitionMetadata(super_device_, *metadata.get());
return UpdateAllPartitionMetadata(device_, super_device_, *metadata.get());
}

bool CreatePartitionHandler(FastbootDevice* device, const std::vector<std::string>& args) {
Expand Down
2 changes: 1 addition & 1 deletion fastboot/device/flashing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ bool UpdateSuper(FastbootDevice* device, const std::string& super_name, bool wip
}

// Write the new table to every metadata slot.
if (!UpdateAllPartitionMetadata(super_name, *new_metadata.get())) {
if (!UpdateAllPartitionMetadata(device, super_name, *new_metadata.get())) {
return device->WriteFail("Unable to write new partition table");
}
fs_mgr_overlayfs_teardown();
Expand Down
10 changes: 8 additions & 2 deletions fastboot/device/utility.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -200,10 +200,16 @@ bool GetDeviceLockStatus() {
return cmdline.find("androidboot.verifiedbootstate=orange") == std::string::npos;
}

bool UpdateAllPartitionMetadata(const std::string& super_name,
bool UpdateAllPartitionMetadata(FastbootDevice* device, const std::string& super_name,
const android::fs_mgr::LpMetadata& metadata) {
size_t num_slots = 1;
auto boot_control_hal = device->boot_control_hal();
if (boot_control_hal) {
num_slots = boot_control_hal->getNumberSlots();
}

bool ok = true;
for (size_t i = 0; i < metadata.geometry.metadata_slot_count; i++) {
for (size_t i = 0; i < num_slots; i++) {
ok &= UpdatePartitionTable(super_name, metadata, i);
}
return ok;
Expand Down
2 changes: 1 addition & 1 deletion fastboot/device/utility.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,5 +68,5 @@ std::vector<std::string> ListPartitions(FastbootDevice* device);
bool GetDeviceLockStatus();

// Update all copies of metadata.
bool UpdateAllPartitionMetadata(const std::string& super_name,
bool UpdateAllPartitionMetadata(FastbootDevice* device, const std::string& super_name,
const android::fs_mgr::LpMetadata& metadata);

0 comments on commit 8fd4435

Please sign in to comment.