Commit ad500dbddef6b78383eead2587a08e4b50403358

Authored by Haibo Chen
Committed by guoyin.chen
1 parent a15a650e05

MLK-12209 mmc: cast u8 to unsigned long long to avoid unexpected error

unsigned long long data might have strange data if first bit of u8 data
was 1. this patch cast it to (unsigned long long)

ex)
	u8  data8;
	u64 data64;

	data8 = 0x80;
	data64 = (data8 << 24); // 0xffffffff80000000
	data64 = (((unsigned long long)data8) << 24); // 0x80000000;

(reported by Coverity)

Signed-off-by: Haibo Chen <haibo.chen@nxp.com>

Showing 1 changed file with 12 additions and 12 deletions Side-by-side Diff

... ... @@ -1188,10 +1188,10 @@
1188 1188 * ext_csd's capacity is valid if the value is more
1189 1189 * than 2GB
1190 1190 */
1191   - capacity = ext_csd[EXT_CSD_SEC_CNT] << 0
1192   - | ext_csd[EXT_CSD_SEC_CNT + 1] << 8
1193   - | ext_csd[EXT_CSD_SEC_CNT + 2] << 16
1194   - | ext_csd[EXT_CSD_SEC_CNT + 3] << 24;
  1191 + capacity = (u64)ext_csd[EXT_CSD_SEC_CNT] << 0
  1192 + | (u64)ext_csd[EXT_CSD_SEC_CNT + 1] << 8
  1193 + | (u64)ext_csd[EXT_CSD_SEC_CNT + 2] << 16
  1194 + | (u64)ext_csd[EXT_CSD_SEC_CNT + 3] << 24;
1195 1195 capacity *= MMC_MAX_BLOCK_LEN;
1196 1196 if ((capacity >> 20) > 2 * 1024)
1197 1197 mmc->capacity_user = capacity;
... ... @@ -1263,10 +1263,10 @@
1263 1263 mmc->enh_user_size *= ext_csd[EXT_CSD_HC_WP_GRP_SIZE];
1264 1264 mmc->enh_user_size <<= 19;
1265 1265 mmc->enh_user_start =
1266   - (ext_csd[EXT_CSD_ENH_START_ADDR+3] << 24) +
1267   - (ext_csd[EXT_CSD_ENH_START_ADDR+2] << 16) +
1268   - (ext_csd[EXT_CSD_ENH_START_ADDR+1] << 8) +
1269   - ext_csd[EXT_CSD_ENH_START_ADDR];
  1266 + ((u64)ext_csd[EXT_CSD_ENH_START_ADDR+3] << 24) +
  1267 + ((u64)ext_csd[EXT_CSD_ENH_START_ADDR+2] << 16) +
  1268 + ((u64)ext_csd[EXT_CSD_ENH_START_ADDR+1] << 8) +
  1269 + (u64)ext_csd[EXT_CSD_ENH_START_ADDR];
1270 1270 if (mmc->high_capacity)
1271 1271 mmc->enh_user_start <<= 9;
1272 1272 }
... ... @@ -1301,10 +1301,10 @@
1301 1301 * JEDEC Standard JESD84-B45, 6.2.4
1302 1302 */
1303 1303 if (mmc->high_capacity && part_completed) {
1304   - capacity = (ext_csd[EXT_CSD_SEC_CNT]) |
1305   - (ext_csd[EXT_CSD_SEC_CNT + 1] << 8) |
1306   - (ext_csd[EXT_CSD_SEC_CNT + 2] << 16) |
1307   - (ext_csd[EXT_CSD_SEC_CNT + 3] << 24);
  1304 + capacity = ((u64)ext_csd[EXT_CSD_SEC_CNT]) |
  1305 + ((u64)ext_csd[EXT_CSD_SEC_CNT + 1] << 8) |
  1306 + ((u64)ext_csd[EXT_CSD_SEC_CNT + 2] << 16) |
  1307 + ((u64)ext_csd[EXT_CSD_SEC_CNT + 3] << 24);
1308 1308 capacity *= MMC_MAX_BLOCK_LEN;
1309 1309 mmc->capacity_user = capacity;
1310 1310 }