4.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Wang Dongsheng <[email protected]>

[ Upstream commit c7eabbee3de99347105faa7fd925a500ccf43baf ]

The device specific resource can be free in free_slot after
removing host controller.

Signed-off-by: Wang Dongsheng <[email protected]>
Acked-by: Adrian Hunter <[email protected]>
Signed-off-by: Ulf Hansson <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
 drivers/mmc/host/sdhci-acpi.c |    8 ++++++++
 1 file changed, 8 insertions(+)

--- a/drivers/mmc/host/sdhci-acpi.c
+++ b/drivers/mmc/host/sdhci-acpi.c
@@ -76,6 +76,7 @@ struct sdhci_acpi_slot {
        size_t          priv_size;
        int (*probe_slot)(struct platform_device *, const char *, const char *);
        int (*remove_slot)(struct platform_device *);
+       int (*free_slot)(struct platform_device *pdev);
        int (*setup_host)(struct platform_device *pdev);
 };
 
@@ -756,6 +757,9 @@ static int sdhci_acpi_probe(struct platf
 err_cleanup:
        sdhci_cleanup_host(c->host);
 err_free:
+       if (c->slot && c->slot->free_slot)
+               c->slot->free_slot(pdev);
+
        sdhci_free_host(c->host);
        return err;
 }
@@ -777,6 +781,10 @@ static int sdhci_acpi_remove(struct plat
 
        dead = (sdhci_readl(c->host, SDHCI_INT_STATUS) == ~0);
        sdhci_remove_host(c->host, dead);
+
+       if (c->slot && c->slot->free_slot)
+               c->slot->free_slot(pdev);
+
        sdhci_free_host(c->host);
 
        return 0;


Reply via email to