diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c index 74e34a07ef72f..a04fceb39b3c7 100644 --- a/drivers/amba/bus.c +++ b/drivers/amba/bus.c @@ -353,7 +353,7 @@ static void amba_shutdown(struct device *dev) static int amba_dma_configure(struct device *dev) { - struct amba_driver *drv = to_amba_driver(dev->driver); + const struct device_driver *drv = READ_ONCE(dev->driver); enum dev_dma_attr attr; int ret = 0; @@ -365,7 +365,7 @@ static int amba_dma_configure(struct device *dev) } /* @drv may not be valid when we're called from the IOMMU layer */ - if (!ret && dev->driver && !drv->driver_managed_dma) { + if (!ret && drv && !to_amba_driver(drv)->driver_managed_dma) { ret = iommu_device_use_default_domain(dev); if (ret) arch_teardown_dma_ops(dev);