diff options
author | Alexey Romanov <avromanov@salutedevices.com> | 2023-12-25 13:22:45 +0300 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2024-01-11 22:14:57 -0500 |
commit | bf2df680286956b3187b1820ae54c5a0fb594857 (patch) | |
tree | 1b1338bd798f8f2a5aa62a89b6b21c8acf8270af /boot | |
parent | 03e598263e3878b6f5d58f5525577903edadc644 (diff) | |
download | u-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>
Diffstat (limited to 'boot')
-rw-r--r-- | boot/android_ab.c | 18 |
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 |