diff --git a/adb/set_verity_enable_state_service.cpp b/adb/set_verity_enable_state_service.cpp index 49e0363a1..253d14a0e 100644 --- a/adb/set_verity_enable_state_service.cpp +++ b/adb/set_verity_enable_state_service.cpp @@ -93,9 +93,21 @@ static bool set_verity_enabled_state(int fd, const char* block_device, const cha /* Helper function to get A/B suffix, if any. If the device isn't * using A/B the empty string is returned. Otherwise either "_a", * "_b", ... is returned. + * + * Note that since sometime in O androidboot.slot_suffix is deprecated + * and androidboot.slot should be used instead. Since bootloaders may + * be out of sync with the OS, we check both and for extra safety + * prepend a leading underscore if there isn't one already. */ static std::string get_ab_suffix() { - return android::base::GetProperty("ro.boot.slot_suffix", ""); + std::string ab_suffix = android::base::GetProperty("ro.boot.slot_suffix", ""); + if (ab_suffix == "") { + ab_suffix = android::base::GetProperty("ro.boot.slot", ""); + } + if (ab_suffix.size() > 0 && ab_suffix[0] != '_') { + ab_suffix = std::string("_") + ab_suffix; + } + return ab_suffix; } /* Use AVB to turn verity on/off */ diff --git a/fs_mgr/fs_mgr_slotselect.cpp b/fs_mgr/fs_mgr_slotselect.cpp index 33fd56240..9ca15e237 100644 --- a/fs_mgr/fs_mgr_slotselect.cpp +++ b/fs_mgr/fs_mgr_slotselect.cpp @@ -21,12 +21,19 @@ #include "fs_mgr.h" #include "fs_mgr_priv.h" -// Returns "_a" or "_b" based on androidboot.slot_suffix in kernel cmdline, or an empty string -// if that parameter does not exist. +// Returns "_a" or "_b" based on two possible values in kernel cmdline: +// - androidboot.slot = a or b OR +// - androidboot.slot_suffix = _a or _b +// TODO: remove slot_suffix once it's deprecated. std::string fs_mgr_get_slot_suffix() { + std::string slot; std::string ab_suffix; - fs_mgr_get_boot_config("slot_suffix", &ab_suffix); + if (fs_mgr_get_boot_config("slot", &slot)) { + ab_suffix = "_" + slot; + } else if (!fs_mgr_get_boot_config("slot_suffix", &ab_suffix)) { + ab_suffix = ""; + } return ab_suffix; }