On Mon, May 13, 2013 at 9:08 AM, Jiang Liu <liuj97@xxxxxxxxx> wrote: > From: Gu Zheng <guz.fnst@xxxxxxxxxxxxxx> > diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c > index 4f0bc0a..bc075a3 100644 > --- a/drivers/pci/probe.c > +++ b/drivers/pci/probe.c > @@ -1131,6 +1131,7 @@ static void pci_release_dev(struct device *dev) > struct pci_dev *pci_dev; > > pci_dev = to_pci_dev(dev); > + pci_bus_put(pci_dev->bus); > pci_release_capabilities(pci_dev); > pci_release_of_node(pci_dev); > kfree(pci_dev); > @@ -1269,11 +1270,10 @@ static struct pci_dev *pci_scan_device(struct pci_bus *bus, int devfn) > if (!pci_bus_read_dev_vendor_id(bus, devfn, &l, 60*1000)) > return NULL; > > - dev = alloc_pci_dev(); > + dev = pci_alloc_dev(bus); > if (!dev) > return NULL; > > - dev->bus = bus; > dev->devfn = devfn; > dev->vendor = l & 0xffff; > dev->device = (l >> 16) & 0xffff; in pci_setup_device() fail path, it release the ref to that bus. Yinghai -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html