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 probe
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>
arch_teardown_dma_ops(dev);

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