Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a07245d1 authored by Marc Zyngier's avatar Marc Zyngier Committed by Bjorn Helgaas
Browse files

PCI: generic: Fix lookup of linux,pci-probe-only property



When pci-host-generic looks for the probe-only property, it seems to trust
the DT to be correctly written, and assumes that there is a parameter to
the property.

Unfortunately, this is not always the case, and some firmware expose this
property naked.  The driver ends up making a decision based on whatever the
property pointer points to, which is likely to be junk.

Switch to the common of_pci.c implementation that doesn't suffer from this
problem.

Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Acked-by: default avatarWill Deacon <will.deacon@arm.com>
parent f81c11af
Loading
Loading
Loading
Loading
+1 −8
Original line number Diff line number Diff line
@@ -210,7 +210,6 @@ static int gen_pci_probe(struct platform_device *pdev)
	int err;
	const char *type;
	const struct of_device_id *of_id;
	const int *prop;
	struct device *dev = &pdev->dev;
	struct device_node *np = dev->of_node;
	struct gen_pci *pci = devm_kzalloc(dev, sizeof(*pci), GFP_KERNEL);
@@ -225,13 +224,7 @@ static int gen_pci_probe(struct platform_device *pdev)
		return -EINVAL;
	}

	prop = of_get_property(of_chosen, "linux,pci-probe-only", NULL);
	if (prop) {
		if (*prop)
			pci_add_flags(PCI_PROBE_ONLY);
		else
			pci_clear_flags(PCI_PROBE_ONLY);
	}
	of_pci_check_probe_only();

	of_id = of_match_node(gen_pci_of_match, np);
	pci->cfg.ops = of_id->data;