diff options
| author | Bjorn Helgaas <bhelgaas@google.com> | 2025-07-31 16:11:42 -0500 |
|---|---|---|
| committer | Bjorn Helgaas <bhelgaas@google.com> | 2025-07-31 16:11:42 -0500 |
| commit | 9fef768d867c70cdbb43a2152ce539618ce07b2e (patch) | |
| tree | 516f9ddfa4d46f7fa390df0c07c8e40d113e1a2c | |
| parent | Merge branch 'pci/hotplug' (diff) | |
| parent | PCI: Fix driver_managed_dma check (diff) | |
| download | linux-9fef768d867c70cdbb43a2152ce539618ce07b2e.tar.gz linux-9fef768d867c70cdbb43a2152ce539618ce07b2e.zip | |
Merge branch 'pci/iommu'
- Fix a Time-of-Check to Time-of-Use issue when testing driver_managed_dma
in the IOMMU probe path (Robin Murphy)
* pci/iommu:
PCI: Fix driver_managed_dma check
| -rw-r--r-- | drivers/pci/pci-driver.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c index 67db34fd10ee..01e6aea1b0c7 100644 --- a/drivers/pci/pci-driver.c +++ b/drivers/pci/pci-driver.c @@ -1628,7 +1628,7 @@ static int pci_bus_num_vf(struct device *dev) */ static int pci_dma_configure(struct device *dev) { - struct pci_driver *driver = to_pci_driver(dev->driver); + const struct device_driver *drv = READ_ONCE(dev->driver); struct device *bridge; int ret = 0; @@ -1645,8 +1645,8 @@ static int pci_dma_configure(struct device *dev) pci_put_host_bridge_device(bridge); - /* @driver may not be valid when we're called from the IOMMU layer */ - if (!ret && dev->driver && !driver->driver_managed_dma) { + /* @drv may not be valid when we're called from the IOMMU layer */ + if (!ret && drv && !to_pci_driver(drv)->driver_managed_dma) { ret = iommu_device_use_default_domain(dev); if (ret) arch_teardown_dma_ops(dev); |
