l440gx: weird PCI refcounting
Hi,
stanse found two PCI device double puts in l440gx code.
init_l440gx looks like:
dev = pci_get_device(PCI_VENDOR_ID_INTEL,...);pm_dev = pci_get_device(PCI_VENDOR_ID_INTEL,...);
pci_dev_put(dev); // first
...
if (!(pm_iobase->flags & IORESOURCE_IO)) {
...
pci_dev_put(pm_dev); // first
...
if (pci_assign_resource(pm_dev, PIIXE_IOBASE_RESOURCE) != 0) {
pci_dev_put(dev); // second
pci_dev_put(pm_dev); // second
return -ENXIO; }
}
I would fix it, but I don't see from that, what the code should do. pm_dev is used after it's put. And to add, cleanup_l440gx doesn't contain any puts at all.
Any ideas?
References:
http://decibel.fi.muni.cz/~xslaby/stanse/error.cgi?db=33-rc&id=635#l84
http://decibel.fi.muni.cz/~xslaby/stanse/error.cgi?db=33-rc&id=636#l48
Signature · 1 line
js