mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 12:44:03 +02:00
dmaengine: zynqmp_dma: fix race between runtime PM and device removal
In zynqmp_dma_remove(), runtime PM was disabled only after checking
state and doing a manual suspend. This can race with runtime PM in the
remove/unbind (rmmod) path.
Disable runtime PM first, then suspend only if the device is not already
suspended. To prevent any further runtime PM transitions.
Fixes: 72dd8b2914 ("dmaengine: zynqmp_dma: Add shutdown operation support")
Co-developed-by: Prasanna Kumar T S M <ptsm@linux.microsoft.com>
Signed-off-by: Prasanna Kumar T S M <ptsm@linux.microsoft.com>
Signed-off-by: Golla Nagendra <nagendra.golla@amd.com>
Reviewed-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
Link: https://patch.msgid.link/20260630064844.705173-2-nagendra.golla@amd.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
887b311938
commit
516ba2d8b7
|
|
@ -1170,9 +1170,9 @@ static void zynqmp_dma_remove(struct platform_device *pdev)
|
|||
dma_async_device_unregister(&zdev->common);
|
||||
|
||||
zynqmp_dma_chan_remove(zdev->chan);
|
||||
if (pm_runtime_active(zdev->dev))
|
||||
zynqmp_dma_runtime_suspend(zdev->dev);
|
||||
pm_runtime_disable(zdev->dev);
|
||||
if (!pm_runtime_status_suspended(zdev->dev))
|
||||
zynqmp_dma_runtime_suspend(zdev->dev);
|
||||
}
|
||||
|
||||
static const struct of_device_id zynqmp_dma_of_match[] = {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user