Commit ad500dbddef6b78383eead2587a08e4b50403358
Committed by
guoyin.chen
1 parent
a15a650e05
Exists in
smarc-imx_v2015.04_4.1.15_1.0.0_ga
and in
1 other branch
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
drivers/mmc/mmc.c
... | ... | @@ -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 | } |