On Mon, May 25, 2026 at 00:31, Colin Pinnell McAllister <[email protected]> 
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 <[email protected]>

Reviewed-by: Mattijs Korpershoek <[email protected]>

> ---
> 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

Reply via email to