Message ID | 20190110184151.27492-1-lorenzo.pieralisi@arm.com (mailing list archive) |
---|---|
State | Mainlined, archived |
Commit | c7777236dd8f587f6a8d6800c03df318fd4d2627 |
Headers | show |
Series | [RESEND] ACPI/IORT: Fix rc_dma_get_range() | expand |
On Thu, Jan 10, 2019 at 06:41:51PM +0000, Lorenzo Pieralisi wrote: > From: Jean-Philippe Brucker <jean-philippe.brucker@arm.com> > > When executed for a PCI_ROOT_COMPLEX type, iort_match_node_callback() > expects the opaque pointer argument to be a PCI bus device. At the > moment rc_dma_get_range() passes the PCI endpoint instead of the bus, > and we've been lucky to have pci_domain_nr(ptr) return 0 instead of > crashing. Pass the bus device to iort_scan_node(). > > Fixes: 5ac65e8c8941 ("ACPI/IORT: Support address size limit for root complexes") > Reported-by: Eric Auger <eric.auger@redhat.com> > Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com> > Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> > Reviewed-by: Eric Auger <eric.auger@redhat.com> > Acked-by: Robin Murphy <robin.murphy@arm.com> > Cc: stable@vger.kernel.org > Cc: Will Deacon <will.deacon@arm.com> > Cc: Hanjun Guo <hanjun.guo@linaro.org> > Cc: Sudeep Holla <sudeep.holla@arm.com> > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net> > --- > Will, Catalin, > > resending a reformatted version of this fix previously posted in [1], > please merge it for one of the upcoming -rc. Thanks, I'll push this out later today. Will
diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c index fdd90ffceb85..c08afe44c488 100644 --- a/drivers/acpi/arm64/iort.c +++ b/drivers/acpi/arm64/iort.c @@ -952,9 +952,10 @@ static int rc_dma_get_range(struct device *dev, u64 *size) { struct acpi_iort_node *node; struct acpi_iort_root_complex *rc; + struct pci_bus *pbus = to_pci_dev(dev)->bus; node = iort_scan_node(ACPI_IORT_NODE_PCI_ROOT_COMPLEX, - iort_match_node_callback, dev); + iort_match_node_callback, &pbus->dev); if (!node || node->revision < 1) return -ENODEV;