Merge "target: msm8909: Add changes to support AVB2.0"
diff --git a/app/aboot/aboot.c b/app/aboot/aboot.c
index 62cc67a..1025e99 100644
--- a/app/aboot/aboot.c
+++ b/app/aboot/aboot.c
@@ -3210,7 +3210,10 @@
fs_signature_type ret = NO_FS;
int index;
unsigned long long ptn;
- char *sb_buffer = memalign(CACHE_LINE, mmc_blocksize);
+ char *buffer = memalign(CACHE_LINE, mmc_blocksize);
+ uint32_t sb_blk_offset = 0;
+ char *sb_buffer = buffer;
+
if (!sb_buffer)
{
dprintf(CRITICAL, "ERROR: Failed to allocate buffer for superblock\n");
@@ -3225,21 +3228,24 @@
}
ptn = partition_get_offset(index);
mmc_set_lun(partition_get_lun(index));
- if(mmc_read(ptn + FS_SUPERBLOCK_OFFSET,
+ sb_blk_offset = (FS_SUPERBLOCK_OFFSET/mmc_blocksize);
+
+ if(mmc_read(ptn + (sb_blk_offset * mmc_blocksize),
(void *)sb_buffer, mmc_blocksize))
{
dprintf(CRITICAL, "ERROR: Failed to read Superblock\n");
goto out;
}
- if (*((uint16 *)(&sb_buffer[EXT_MAGIC_OFFSET_SB]))
- == (uint16)EXT_MAGIC)
+ if (sb_blk_offset == 0)
+ sb_buffer += FS_SUPERBLOCK_OFFSET;
+
+ if (*((uint16 *)(&sb_buffer[EXT_MAGIC_OFFSET_SB])) == (uint16)EXT_MAGIC)
{
dprintf(SPEW, "%s() Found EXT FS\n", arg);
ret = EXT_FS_SIGNATURE;
}
- else if (*((uint32 *)(&sb_buffer[F2FS_MAGIC_OFFSET_SB]))
- == F2FS_MAGIC)
+ else if (*((uint32 *)(&sb_buffer[F2FS_MAGIC_OFFSET_SB])) == F2FS_MAGIC)
{
dprintf(SPEW, "%s() Found F2FS FS\n", arg);
ret = EXT_F2FS_SIGNATURE;
@@ -3252,8 +3258,8 @@
}
out:
- if(sb_buffer)
- free(sb_buffer);
+ if(buffer)
+ free(buffer);
return ret;
}