aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Romanov <avromanov@salutedevices.com>2023-12-25 13:22:45 +0300
committerTom Rini <trini@konsulko.com>2024-01-11 22:14:57 -0500
commitbf2df680286956b3187b1820ae54c5a0fb594857 (patch)
tree1b1338bd798f8f2a5aa62a89b6b21c8acf8270af
parent03e598263e3878b6f5d58f5525577903edadc644 (diff)
downloadu-boot-bf2df680286956b3187b1820ae54c5a0fb594857.zip
u-boot-bf2df680286956b3187b1820ae54c5a0fb594857.tar.gz
u-boot-bf2df680286956b3187b1820ae54c5a0fb594857.tar.bz2
android_ab: don't ignore ab_control_store return code
ab_control_store() can return an error if writing to disk fails. In this case, we have to pass the error code to the caller. Signed-off-by: Alexey Romanov <avromanov@salutedevices.com> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
-rw-r--r--boot/android_ab.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/boot/android_ab.c b/boot/android_ab.c
index 0f20a34..c9df6d2 100644
--- a/boot/android_ab.c
+++ b/boot/android_ab.c
@@ -336,7 +336,14 @@ int ab_select_slot(struct blk_desc *dev_desc, struct disk_partition *part_info,
if (store_needed) {
abc->crc32_le = ab_control_compute_crc(abc);
- ab_control_store(dev_desc, part_info, abc, 0);
+ ret = ab_control_store(dev_desc, part_info, abc, 0);
+ if (ret < 0) {
+#if ANDROID_AB_BACKUP_OFFSET
+ free(backup_abc);
+#endif
+ free(abc);
+ return ret;
+ }
}
#if ANDROID_AB_BACKUP_OFFSET
@@ -345,8 +352,13 @@ int ab_select_slot(struct blk_desc *dev_desc, struct disk_partition *part_info,
* to the backup offset
*/
if (memcmp(backup_abc, abc, sizeof(*abc)) != 0) {
- ab_control_store(dev_desc, part_info, abc,
- ANDROID_AB_BACKUP_OFFSET);
+ ret = ab_control_store(dev_desc, part_info, abc,
+ ANDROID_AB_BACKUP_OFFSET);
+ if (ret < 0) {
+ free(backup_abc);
+ free(abc);
+ return ret;
+ }
}
free(backup_abc);
#endif