diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c index 6da97f26f8a9..b33d2c98a11f 100644 --- a/drivers/mmc/core/mmc.c +++ b/drivers/mmc/core/mmc.c @@ -699,6 +699,7 @@ static int mmc_read_ext_csd(struct mmc_card *card) #ifdef CONFIG_ROCKCHIP_THUNDER_BOOT void *ecsd; bool valid_ecsd = false; + bool valid_reserved = false; struct device_node *mem; struct resource reg; struct device *dev = card->host->parent; @@ -714,6 +715,7 @@ static int mmc_read_ext_csd(struct mmc_card *card) dev_err(dev, "fail to get resource\n"); goto get_ecsd; } + valid_reserved = true; ecsd = mmc_tb_map_ecsd(reg.start, resource_size(®)); if (!ecsd) @@ -765,6 +767,10 @@ decode: kfree(ext_csd); else vunmap(ecsd); + if (valid_reserved) + free_reserved_area(phys_to_virt(reg.start), + phys_to_virt(reg.start) + resource_size(®), + -1, "memory-region-ecsd"); #else kfree(ext_csd); #endif