[PATCH v2] mmc: sdhci-of-bst: Fix memory leak in sdhci_bst_alloc_bounce_buffer()

From: Felix Gu

Date: Mon Mar 02 2026 - 08:51:33 EST


In sdhci_bst_alloc_bounce_buffer(), if dma_alloc_coherent() fails, the
function immediately returns -ENOMEM without releasing the reserved
memory, which results in a memory leak.

Add the missing of_reserved_mem_device_release() call before returning
-ENOMEM to properly clean up the reserved memory.

Fixes: 695824f45629 ("mmc: sdhci: add Black Sesame Technologies BST C1200 controller driver")
Signed-off-by: Felix Gu <ustc.gu@xxxxxxxxx>
---
Changes in v2:
- Fix Adrian's comment.
- Link to v1: https://lore.kernel.org/r/20260301-bst-v1-1-ddbc22ec3ed9@xxxxxxxxx
---
drivers/mmc/host/sdhci-of-bst.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/mmc/host/sdhci-of-bst.c b/drivers/mmc/host/sdhci-of-bst.c
index c124990a64f4..f8d3df715e1a 100644
--- a/drivers/mmc/host/sdhci-of-bst.c
+++ b/drivers/mmc/host/sdhci-of-bst.c
@@ -425,8 +425,10 @@ static int sdhci_bst_alloc_bounce_buffer(struct sdhci_host *host)

host->bounce_buffer = dma_alloc_coherent(mmc_dev(mmc), bounce_size,
&host->bounce_addr, GFP_KERNEL);
- if (!host->bounce_buffer)
+ if (!host->bounce_buffer) {
+ of_reserved_mem_device_release(mmc_dev(mmc));
return -ENOMEM;
+ }

host->bounce_buffer_size = bounce_size;


---
base-commit: 3fa5e5702a82d259897bd7e209469bc06368bf31
change-id: 20260301-bst-76bb7c6d7931

Best regards,
--
Felix Gu <ustc.gu@xxxxxxxxx>