[PATCH v2] cmd: bcb: select user(0) hwpart in __bcb_load()

Mattijs Korpershoek mkorpershoek at baylibre.com
Thu Oct 13 14:25:59 CEST 2022


For some blk operations, it's possible that a different hw partition
gets selected via blk_dselect_hwpart().
In that case, only the region of the device covered by that partition
is accessible.

This breaks "bcb load" which attempts to read the gpt and assumes it's
on the user(0) hw partition:

=> bcb load 2 misc
GUID Partition Table Header signature is wrong: 0xDE7B17AD07D9E5D6 != 0x5452415020494645
find_valid_gpt: *** ERROR: Invalid GPT ***
GUID Partition Table Header signature is wrong: 0x0 != 0x5452415020494645
find_valid_gpt: *** ERROR: Invalid Backup GPT ***
Error: mmc 2:misc read failed (-2)

Add a fail-safe in __bcb_load() to ensure we will always read from the
user(0) hwpartition.

This fixes the following fastboot sequence:

$ fastboot erase mmc2boot1    # switch to hwpart1
$ fastboot reboot bootloader  # switch to hwpart0, then reads GPT

Signed-off-by: Mattijs Korpershoek <mkorpershoek at baylibre.com>
---
Changes in v2:

* Move hwpart selection into the bcb command instead of fb_mmc.c
* Link to v1: https://lore.kernel.org/r/20221010-switch-hwpart-v1-0-52cbd34c72b7@baylibre.com
---
 cmd/bcb.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/cmd/bcb.c b/cmd/bcb.c
index 1622a90c97f0..02d0c70d87e2 100644
--- a/cmd/bcb.c
+++ b/cmd/bcb.c
@@ -14,6 +14,7 @@
 #include <part.h>
 #include <malloc.h>
 #include <memalign.h>
+#include <linux/err.h>
 
 enum bcb_cmd {
 	BCB_CMD_LOAD,
@@ -128,6 +129,16 @@ static int __bcb_load(int devnum, const char *partp)
 		goto err_read_fail;
 	}
 
+	/*
+	 * always select the USER mmc hwpart in case another
+	 * blk operation selected a different hwpart
+	 */
+	ret = blk_dselect_hwpart(desc, 0);
+	if (IS_ERR_VALUE(ret)) {
+		ret = -ENODEV;
+		goto err_read_fail;
+	}
+
 	part = simple_strtoul(partp, &endp, 0);
 	if (*endp == '\0') {
 		ret = part_get_info(desc, part, &info);

---
base-commit: c4c32e359662aa95d9dbda2bd1272181bd9cb830
change-id: 20221011-usb-hwpart-599c278980b3

Best regards,
-- 
Mattijs Korpershoek <mkorpershoek at baylibre.com>


More information about the U-Boot mailing list