summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Woodhouse2014-04-15 07:01:30 +0200
committerDavid Woodhouse2014-04-15 07:01:30 +0200
commit9f05d3fb644bf178c169d9c70dcfe360e3a006ae (patch)
tree13792fd61a15ccc27411d059195bd8ab5a78bda0
parentiommu/vt-d: fix memory leakage caused by commit ea8ea46 (diff)
downloadkernel-qcow2-linux-9f05d3fb644bf178c169d9c70dcfe360e3a006ae.tar.gz
kernel-qcow2-linux-9f05d3fb644bf178c169d9c70dcfe360e3a006ae.tar.xz
kernel-qcow2-linux-9f05d3fb644bf178c169d9c70dcfe360e3a006ae.zip
iommu/vt-d: Fix get_domain_for_dev() handling of upstream PCIe bridges
Commit 146922ec79 ("iommu/vt-d: Make get_domain_for_dev() take struct device") introduced new variables bridge_bus and bridge_devfn to identify the upstream PCIe to PCI bridge responsible for the given target device. Leaving the original bus/devfn variables to identify the target device itself, now that it is no longer assumed to be PCI and we can no longer trivially find that information. However, the patch failed to correctly use the new variables in all cases; instead using the as-yet-uninitialised 'bus' and 'devfn' variables. Reported-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
-rw-r--r--drivers/iommu/intel-iommu.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index 13dc2318e17a..f256ffc02e29 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
@@ -2237,7 +2237,9 @@ static struct dmar_domain *get_domain_for_dev(struct device *dev, int gaw)
bridge_devfn = dev_tmp->devfn;
}
spin_lock_irqsave(&device_domain_lock, flags);
- info = dmar_search_domain_by_dev_info(segment, bus, devfn);
+ info = dmar_search_domain_by_dev_info(segment,
+ bridge_bus,
+ bridge_devfn);
if (info) {
iommu = info->iommu;
domain = info->domain;