Merge "platform: msm_shared: avb: use build time flags to determine avb partitions"
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;
 }