On Sun, Feb 25, 2018 at 10:46:02AM +0800, Shawn Lin wrote: > pci_register_host_bridge records bus->domain_nr from > pci_bus_find_domain_nr but not guarantee not to pass a NULL > struct device *parent to it which could be explained by the hint > of checkcing for parent device before calling set_dev_node(), > just lines after that. So of_pci_bus_find_domain_nr wisely check > the parent pointer at the very beginning, but forgot to check it > again when trying to get of_node from parent, which could causes > a NULL pointer dereference. Fix it by dumping the NULL pointer > address simply, if no parent available. > > Signed-off-by: Shawn Lin <shawn.lin@xxxxxxxxxxxxxx> > --- > > drivers/pci/pci.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c > index f6a4dd1..ef18c48 100644 > --- a/drivers/pci/pci.c > +++ b/drivers/pci/pci.c > @@ -5612,7 +5612,7 @@ static int of_pci_bus_find_domain_nr(struct device *parent) > domain = pci_get_new_domain_nr(); > } else { > dev_err(parent, "Node %pOF has inconsistent \"linux,pci-domain\" property in DT\n", > - parent->of_node); > + parent ? parent->of_node : NULL); I really need to get rid of this function in its current form. In the interim, I think that printing NULL as faulting node gives no information whatsoever so this patch should be updated either by avoiding to print or better by demoting the dev_err() to a pr_err(), whatever works better for Bjorn. Thanks, Lorenzo > domain = -1; > } > > -- > 1.9.1 > >