summaryrefslogtreecommitdiff
path: root/components/drivers
diff options
context:
space:
mode:
authorZhou Yanjie <[email protected]>2019-07-18 19:57:02 +0800
committerZhou Yanjie <[email protected]>2019-07-19 21:18:56 +0800
commit976ea2411261287b605e39922bbde21d3f457045 (patch)
tree983fb951649fcfe57fe044cf4d4bc0ea9d04f09d /components/drivers
parent9a1be9e73deae678706abc31f74deef7d414f6cc (diff)
sdio: mmc.c: 防止容量计算过程溢出/Prevent capacity calculation overflow.
修改“mmc_parse_ext_csd”函数,防止容量计算过程溢出。 Modify the "mmc_parse_ext_csd" function to prevent the capacity calculation process from overflowing. Signed-off-by: Zhou Yanjie <[email protected]>
Diffstat (limited to 'components/drivers')
-rw-r--r--components/drivers/sdio/mmc.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/components/drivers/sdio/mmc.c b/components/drivers/sdio/mmc.c
index 5c7ddcb258..34e91ea386 100644
--- a/components/drivers/sdio/mmc.c
+++ b/components/drivers/sdio/mmc.c
@@ -182,6 +182,8 @@ static int mmc_get_ext_csd(struct rt_mmcsd_card *card, rt_uint8_t **new_ext_csd)
*/
static int mmc_parse_ext_csd(struct rt_mmcsd_card *card, rt_uint8_t *ext_csd)
{
+ rt_uint64_t card_capacity = 0;
+
if(card == RT_NULL || ext_csd == RT_NULL)
{
LOG_E("emmc parse ext csd fail, invaild args");
@@ -191,9 +193,10 @@ static int mmc_parse_ext_csd(struct rt_mmcsd_card *card, rt_uint8_t *ext_csd)
card->flags |= CARD_FLAG_HIGHSPEED;
card->hs_max_data_rate = 200000000;
- card->card_capacity = *((rt_uint32_t *)&ext_csd[EXT_CSD_SEC_CNT]);
- card->card_capacity *= card->card_blksize;
- card->card_capacity >>= 10; /* unit:KB */
+ card_capacity = *((rt_uint32_t *)&ext_csd[EXT_CSD_SEC_CNT]);
+ card_capacity *= card->card_blksize;
+ card_capacity >>= 10; /* unit:KB */
+ card->card_capacity = card_capacity;
LOG_I("emmc card capacity %d KB.", card->card_capacity);
return 0;