[PATCH v2] android_ab: fix slot selection
Mattijs Korpershoek
mkorpershoek at kernel.org
Mon Jun 8 11:17:43 CEST 2026
On Mon, May 25, 2026 at 00:31, Colin Pinnell McAllister <colinmca242 at gmail.com> wrote:
> The boot selection rules state that a slot is bootable if it is not
> corrupted and either has tries remaining or has already booted
> successfully. However, slots that have tries_remaining == 0 and
> successful_boot == 1 will be disregarded when picking the slot to
> attempt.
>
> Updates the selection logic so slots marked successful remain eligible
> even when their tries counter is zero. Debug message now also includes
> the successful_boot value.
>
> Signed-off-by: Colin Pinnell McAllister <colinmca242 at gmail.com>
Reviewed-by: Mattijs Korpershoek <mkorpershoek at kernel.org>
> ---
> Changes in v2:
> * No changes, just sending the patch from a gmail address
>
> boot/android_ab.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/boot/android_ab.c b/boot/android_ab.c
> index 13e82dbcb7f..f2b1110aa24 100644
> --- a/boot/android_ab.c
> +++ b/boot/android_ab.c
> @@ -289,11 +289,14 @@ int ab_select_slot(struct blk_desc *dev_desc, struct disk_partition *part_info,
> slot = -1;
> for (i = 0; i < abc->nb_slot; ++i) {
> if (abc->slot_info[i].verity_corrupted ||
> - !abc->slot_info[i].tries_remaining) {
> + (!abc->slot_info[i].tries_remaining &&
> + !abc->slot_info[i].successful_boot)) {
> log_debug("ANDROID: unbootable slot %d tries: %d, ",
> i, abc->slot_info[i].tries_remaining);
> - log_debug("corrupt: %d\n",
> + log_debug("corrupt: %d, ",
> abc->slot_info[i].verity_corrupted);
> + log_debug("successful: %d\n",
> + abc->slot_info[i].successful_boot);
> continue;
> }
> log_debug("ANDROID: bootable slot %d pri: %d, tries: %d, ",
> --
> 2.34.1
More information about the U-Boot
mailing list