diff --git a/components/drivers/sdio/sdio.c b/components/drivers/sdio/sdio.c index d1705d43c3..bc1951792f 100644 --- a/components/drivers/sdio/sdio.c +++ b/components/drivers/sdio/sdio.c @@ -6,6 +6,7 @@ * Change Logs: * Date Author Notes * 2012-01-13 weety first version + * 2024-04-04 Evlers fix an issue where repeated remove of card resulted in assertions */ #include @@ -951,6 +952,7 @@ err1: if (host->card) { rt_free(host->card); + host->card = RT_NULL; } err: LOG_E("error %d while initialising SDIO card", err); @@ -987,13 +989,10 @@ rt_int32_t init_sdio(struct rt_mmcsd_host *host, rt_uint32_t ocr) err = sdio_init_card(host, current_ocr); if (err) - goto remove_card; + goto err; return 0; -remove_card: - rt_free(host->card); - host->card = RT_NULL; err: LOG_E("init SDIO card failed");