Re: [PATCH] amba: Fix driver_managed_dma check
From: Ketan Kishore
Date: Thu Aug 27 2026 - 06:14:13 EST
On 4/25/2025 7:09 PM, Robin Murphy wrote:
Since it's not currently safe to take device_lock() in the IOMMU probearch_teardown_dma_ops(dev);
path, that can race against really_probe() setting dev->driver before
attempting to bind. The race itself isn't so bad, since we're only
concerned with dereferencing dev->driver itself anyway, but sadly my
attempt to implement the check with minimal churn leads to a kind of
TOCTOU issue, where dev->driver becomes valid after to_amba_driver(NULL)
is already computed, and thus the check fails to work as intended.
Will and I both hit this with the platform bus, but the pattern here is
the same, so fix it for correctness too.
Reported-by: Will McVicker <willmcvicker@xxxxxxxxxx>
Fixes: bcb81ac6ae3c ("iommu: Get DT/ACPI parsing into the proper probe path")
Signed-off-by: Robin Murphy <robin.murphy@xxxxxxx>
Hello Robin
We faced this issue with amba_dma_configure race internally as well:
Call trace:
amba_dma_configure
__iommu_probe_device
probe_iommu_group
bus_for_each_dev
iommu_device_register
arm_smmu_device_probe
platform_probe
really_probe
__driver_probe_device
driver_probe_device
__device_attach_driver
bus_for_each_drv
__device_attach
device_initial_probe
bus_probe_device
deferred_probe_work_func
process_scheduled_works
worker_thread
kthread
ret_from_fork
We raised change for this based on already merged changes that fixed the same TOCTOU race for the platform bus in
commit 95deee37a123 ("platform: Fix race condition during DMA
configure at IOMMU probe time") and for fsl-mc in commit 152f33ee30ee
("bus: fsl_mc: Fix driver_managed_dma check").
Link: https://lore.kernel.org/all/20260825-iommu_races-v2-1-49de6de71357@xxxxxxxxxxxxxxxx/
We later found this change you raised which was never merged.
Can you please help to revive and take this change forward for merge.
Reviewed-by: Ketan Kishore <ketan.kishore@xxxxxxxxxxxxxxxx>
Regards
Ketan