Re: [PATCH] mmc: cavium: destroy slot platform devices on remove
From: Ulf Hansson
Date: Mon Sep 28 2026 - 12:16:28 EST
On Tue, Sep 15, 2026 at 5:57 PM Guangshuo Li <lgs201920130244@xxxxxxxxx> wrote:
>
> octeon_mmc_probe() creates host->slot_pdev[i] with
> of_platform_device_create(), while octeon_mmc_remove() does not destroy
> the child platform devices.
>
> The probe failure path removes each MMC slot and destroys its associated
> platform device, but the normal remove path only removes the MMC slot.
> As a result, the child platform devices remain registered after the
> Octeon MMC controller is removed.
>
> Destroy each slot platform device during removal after cleaning up the
> corresponding MMC slot, matching the probe failure cleanup path.
>
> This issue was found by manual code inspection.
>
> Fixes: 01d95843335c ("mmc: cavium: Add MMC support for Octeon SOCs.")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Guangshuo Li <lgs201920130244@xxxxxxxxx>
Applied for fixes, thanks!
Kind regards
Uffe
> ---
> drivers/mmc/host/cavium-octeon.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/host/cavium-octeon.c b/drivers/mmc/host/cavium-octeon.c
> index 1bfc1a4f9fe9..671dd1a36a74 100644
> --- a/drivers/mmc/host/cavium-octeon.c
> +++ b/drivers/mmc/host/cavium-octeon.c
> @@ -295,9 +295,12 @@ static void octeon_mmc_remove(struct platform_device *pdev)
> u64 dma_cfg;
> int i;
>
> - for (i = 0; i < CAVIUM_MAX_MMC; i++)
> + for (i = 0; i < CAVIUM_MAX_MMC; i++) {
> if (host->slot[i])
> cvm_mmc_of_slot_remove(host->slot[i]);
> + if (host->slot_pdev[i])
> + of_platform_device_destroy(&host->slot_pdev[i]->dev, NULL);
> + }
>
> dma_cfg = readq(host->dma_base + MIO_EMM_DMA_CFG(host));
> dma_cfg &= ~MIO_EMM_DMA_CFG_EN;
> --
> 2.43.0
>