From 9c7ae587c25b6aa2fc7a661f8932b92aab59def2 Mon Sep 17 00:00:00 2001 From: Fernando Lugo Date: Thu, 23 Mar 2017 15:47:38 -0700 Subject: [PATCH] fs_mgr: update to new androidboot.slot param androidboot.slot_suffix is being deprecated for a androidboot.slot. Bootloader must pass slot used to boot into the androidboot.slot which does not include the '_' character Test: boot android Bug: 36533366 Change-Id: I6137bd08418f67a88120c8609eda10b2ada4607d Signed-off-by: Fernando Lugo --- fs_mgr/fs_mgr_avb.cpp | 8 +++++++- fs_mgr/fs_mgr_slotselect.cpp | 13 +++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/fs_mgr/fs_mgr_avb.cpp b/fs_mgr/fs_mgr_avb.cpp index 2cb7e3438..35577e327 100644 --- a/fs_mgr/fs_mgr_avb.cpp +++ b/fs_mgr/fs_mgr_avb.cpp @@ -489,7 +489,13 @@ int fs_mgr_load_vbmeta_images(struct fstab* fstab) { // fs_mgr only deals with HASHTREE partitions. const char *requested_partitions[] = {nullptr}; std::string ab_suffix; - fs_mgr_get_boot_config("slot_suffix", &ab_suffix); + std::string slot; + if (fs_mgr_get_boot_config("slot", &slot)) { + ab_suffix = "_" + slot; + } else { + // remove slot_suffix once bootloaders update to new androidboot.slot param + fs_mgr_get_boot_config("slot_suffix", &ab_suffix); + } AvbSlotVerifyResult verify_result = avb_slot_verify(fs_mgr_avb_ops, requested_partitions, ab_suffix.c_str(), fs_mgr_vbmeta_prop.allow_verification_error, &fs_mgr_avb_verify_data); diff --git a/fs_mgr/fs_mgr_slotselect.cpp b/fs_mgr/fs_mgr_slotselect.cpp index a536b22ec..7a4547334 100644 --- a/fs_mgr/fs_mgr_slotselect.cpp +++ b/fs_mgr/fs_mgr_slotselect.cpp @@ -31,15 +31,16 @@ int fs_mgr_update_for_slotselect(struct fstab *fstab) char *tmp; if (!got_suffix) { - if (!fs_mgr_get_boot_config("slot_suffix", &suffix)) { - return -1; + std::string slot; + if (fs_mgr_get_boot_config("slot", &slot)) { + suffix = "_" + slot; + } else if (!fs_mgr_get_boot_config("slot_suffix", &suffix)) { + // remove slot_suffix once bootloaders update to new androidboot.slot param + return -1; } - got_suffix = 1; - // remove below line when bootloaders fix androidboot.slot_suffix param - if (suffix[0] == '_') suffix.erase(suffix.begin()); } - if (asprintf(&tmp, "%s_%s", fstab->recs[n].blk_device, suffix.c_str()) > 0) { + if (asprintf(&tmp, "%s%s", fstab->recs[n].blk_device, suffix.c_str()) > 0) { free(fstab->recs[n].blk_device); fstab->recs[n].blk_device = tmp; } else {