From: Peng Fan Date: Mon, 13 Jul 2026 13:32:54 +0000 (+0800) Subject: mmc: sdhci: fix align_buffer memory leak on re-initialization X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b95ce3f0945cac05c09a1837ea2401df78d766d4;p=thirdparty%2Fu-boot.git mmc: sdhci: fix align_buffer memory leak on re-initialization sdhci_init() allocates a 512KB aligned bounce buffer for controllers with SDHCI_QUIRK_32BIT_DMA_ADDR. In the non-DM code path, sdhci_init() is registered as ops->init and called on every mmc_init(). Each call allocates a new buffer without checking or freeing the previous one, leaking 512KB per re-initialization. Fix by guarding the allocation with !host->align_buffer so it only allocates on the first call. Reviewed-by: Tanmay Kathpalia Signed-off-by: Tanmay Kathpalia Signed-off-by: Peng Fan --- diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c index 71a6d8ea2f5..962a99cd05a 100644 --- a/drivers/mmc/sdhci.c +++ b/drivers/mmc/sdhci.c @@ -733,7 +733,8 @@ static int sdhci_init(struct mmc *mmc) */ host->force_align_buffer = true; #else - if (host->quirks & SDHCI_QUIRK_32BIT_DMA_ADDR) { + if ((host->quirks & SDHCI_QUIRK_32BIT_DMA_ADDR) && + !host->align_buffer) { host->align_buffer = memalign(8, 512 * 1024); if (!host->align_buffer) { log_err("Aligned buffer alloc failed\n");