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 21:19:25 -0500
commit20170a1ef0bacf0c215e619cfca5764cda1509c3 (patch)
tree1d0a8310f5bc87b40673728c32306adca265e5c1
parent090fedaadbd469b2c3e6a83d5ac07dc94a1492a9 (diff)
downloadu-boot-WIP/2024-01-12-assorted-fixes.zip
u-boot-WIP/2024-01-12-assorted-fixes.tar.gz
u-boot-WIP/2024-01-12-assorted-fixes.tar.bz2
android_ab: don't ignore ab_control_store return codeWIP/2024-01-12-assorted-fixes
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.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/boot/android_ab.c b/boot/android_ab.c
index 0f20a34..6db665c 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,
+ 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