Commit 87b5d602 authored by Ulf Hansson's avatar Ulf Hansson
Browse files

mmc: tmio: Fixup runtime PM management during remove



Accessing the device when it may be runtime suspended is a bug, which is
the case in tmio_mmc_host_remove(). Let's fix the behaviour.

Cc: stable@vger.kernel.org
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
Tested-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
parent aa86f1a3
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -1274,12 +1274,11 @@ void tmio_mmc_host_remove(struct tmio_mmc_host *host)
	struct platform_device *pdev = host->pdev;
	struct mmc_host *mmc = host->mmc;

	pm_runtime_get_sync(&pdev->dev);

	if (host->pdata->flags & TMIO_MMC_SDIO_IRQ)
		sd_ctrl_write16(host, CTL_TRANSACTION_CTL, 0x0000);

	if (!host->native_hotplug)
		pm_runtime_get_sync(&pdev->dev);

	dev_pm_qos_hide_latency_limit(&pdev->dev);

	mmc_remove_host(mmc);
@@ -1288,6 +1287,8 @@ void tmio_mmc_host_remove(struct tmio_mmc_host *host)
	tmio_mmc_release_dma(host);

	pm_runtime_dont_use_autosuspend(&pdev->dev);
	if (host->native_hotplug)
		pm_runtime_put_noidle(&pdev->dev);
	pm_runtime_put_sync(&pdev->dev);
	pm_runtime_disable(&pdev->dev);
}