Merge "platform: msm-shared: Erase the correct block when invalidating ubi fm" into lk.lnx.1.0-dev.1.0
diff --git a/platform/msm_shared/flash-ubi.c b/platform/msm_shared/flash-ubi.c
index d9c5cc0..010f61e 100644
--- a/platform/msm_shared/flash-ubi.c
+++ b/platform/msm_shared/flash-ubi.c
@@ -816,7 +816,8 @@
int num_pages;
int ret;
int bad_blocks_cnt = 0;
- int fmsb_peb = 0;
+ uint32_t fmsb_peb = UINT_MAX;
+ int is_fmsb_peb_valid = 0;
si = scan_partition(ptn);
if (!si) {
@@ -867,8 +868,10 @@
else
size -= block_size;
- if (fastmap_present(img_peb))
+ if (fastmap_present(img_peb)) {
fmsb_peb = curr_peb;
+ is_fmsb_peb_valid = 1;
+ }
img_peb += flash_block_size();
curr_peb++;
}
@@ -891,9 +894,10 @@
* we need to invalidate the flashed fastmap since it isn't accurate
* anymore.
*/
- if (bad_blocks_cnt && fmsb_peb) {
- dprintf(CRITICAL, "flash_ubi_img: invalidate fmsb\n");
- ret = ubi_erase_peb(ptn->start + 2, si, ptn->start);
+ if (bad_blocks_cnt && (is_fmsb_peb_valid == 1)) {
+ dprintf(CRITICAL, "flash_ubi_img: invalidate fmsb (fmsb_peb = %u)\n",
+ fmsb_peb);
+ ret = ubi_erase_peb(fmsb_peb, si, ptn->start);
}
out: