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>
This commit is contained in:
Alexey Romanov
2023-12-25 13:22:45 +03:00
committed by Tom Rini
parent 03e598263e
commit bf2df68028

View File

@@ -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