At present, normally when one bootmeth fails on a partition, we move on
and try the next bootmeth. However, this was not the case for the final
partition due to a bug. Rework the logic so that all partitions are
treated the same.

Signed-off-by: Simon Glass <[email protected]>
---

Changes in v4:
- Reword the commit message as Tom suggested

 boot/bootflow.c | 34 ++++++++++++++++------------------
 1 file changed, 16 insertions(+), 18 deletions(-)

diff --git a/boot/bootflow.c b/boot/bootflow.c
index 7ed076c898f..deb5f42ba65 100644
--- a/boot/bootflow.c
+++ b/boot/bootflow.c
@@ -221,27 +221,25 @@ static int iter_incr(struct bootflow_iter *iter)
        if (iter->err == BF_NO_MORE_DEVICES)
                return BF_NO_MORE_DEVICES;
 
-       if (iter->err != BF_NO_MORE_PARTS) {
-               /* Get the next boothmethod */
-               if (++iter->cur_method < iter->num_methods) {
-                       iter->method = iter->method_order[iter->cur_method];
-                       return 0;
-               }
+       /* Get the next boothmethod */
+       if (++iter->cur_method < iter->num_methods) {
+               iter->method = iter->method_order[iter->cur_method];
+               return 0;
+       }
+
+       /*
+        * If we have finished scanning the global bootmeths, start the
+        * normal bootdev scan
+        */
+       if (IS_ENABLED(CONFIG_BOOTMETH_GLOBAL) && global) {
+               iter->num_methods = iter->first_glob_method;
+               iter->doing_global = false;
 
                /*
-                * If we have finished scanning the global bootmeths, start the
-                * normal bootdev scan
+                * Don't move to the next dev as we haven't tried this
+                * one yet!
                 */
-               if (IS_ENABLED(CONFIG_BOOTMETH_GLOBAL) && global) {
-                       iter->num_methods = iter->first_glob_method;
-                       iter->doing_global = false;
-
-                       /*
-                        * Don't move to the next dev as we haven't tried this
-                        * one yet!
-                        */
-                       inc_dev = false;
-               }
+               inc_dev = false;
        }
 
        if (iter->flags & BOOTFLOWIF_SINGLE_PARTITION)
-- 
2.43.0

Reply via email to