call 'pci_dev_put' after pci_get_device
PATCH 1/1 call 'pci_dev_put' after pci_get_device
Hi,
Some code didn't call 'pci_dev_put' after pci_get_device. Below is an incomplete list.
Thanks,
Shaohua
===== drivers/pci/pci.c 1.73 vs edited =====
drivers/pci/pci.c +1 -0
@@ -734,6 +734,7 @@ static int __devinit pci_init(void)while ((dev =pci_get_device (PCI_ANY_ID ,PCI_ANY_ID , dev)) !=NULL ) {pci_fixup_device (pci_fixup_final, dev); +pci_dev_put (dev); }return 0 ; }
===== drivers/pci/quirks.c 1.55 vs edited =====
drivers/pci/quirks.c +1 -0
@@ -38,6 +38,7 @@ static void __devinit quirk_passive_rele dlc |=1 <<1 ;pci_write_config_byte (d,0x82 , dlc); } +pci_dev_put (d); } } DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82441, quirk_passive_release
);
===== drivers/pci/setup-irq.c 1.5 vs edited =====
drivers/pci/setup-irq.c +1 -0
@@ -67,5 +67,6 @@ pci_fixup_irqs(u8 (*swizzle)(struct pci_struct pci_dev *dev =NULL ;while ((dev =pci_get_device (PCI_ANY_ID ,PCI_ANY_ID , dev)) !=NULL ) {pdev_fixup_irq (dev, swizzle, map_irq); +pci_dev_put (dev); } }
===== drivers/pci/pci.c 1.73 vs edited =====
drivers/pci/pci.c +1 -0
@@ -734,6 +734,7 @@ static int __devinit pci_init(void)while ((dev =pci_get_device (PCI_ANY_ID ,PCI_ANY_ID , dev)) !=NULL ) {pci_fixup_device (pci_fixup_final, dev); +pci_dev_put (dev); }return 0 ; }
===== drivers/pci/quirks.c 1.55 vs edited =====
drivers/pci/quirks.c +1 -0
@@ -38,6 +38,7 @@ static void __devinit quirk_passive_rele dlc |=1 <<1 ;pci_write_config_byte (d,0x82 , dlc); } +pci_dev_put (d); } }DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_INTEL ,PCI_DEVICE_ID_INTEL_82441 , quirk_passive_release );
===== drivers/pci/setup-irq.c 1.5 vs edited =====
drivers/pci/setup-irq.c +1 -0
@@ -67,5 +67,6 @@ pci_fixup_irqs(u8 (*swizzle)(struct pci_struct pci_dev *dev =NULL ;while ((dev =pci_get_device (PCI_ANY_ID ,PCI_ANY_ID , dev)) !=NULL ) {pdev_fixup_irq (dev, swizzle, map_irq); +pci_dev_put (dev); } }
Quoted 6 lines · shaohua li
Hi,
Some code didn't call 'pci_dev_put' afterpci_get_device. Below is an incomplete list.Thanks,
Shaohua
If pci_get_device() is passed in a non-NULL dev it internally does a pci_dev_put(). So if you do a complete while loop (ie. no breaks, gotos or returns), pci_dev_put() is unnecessary.
Quoted 36 lines
Signed-off-by Li Shaohua <[email protected]>=====
drivers/pci/pci.c1.73 vs edited =====drivers/pci/pci.c +1
-0@@ -734,6 +734,7 @@ static int __devinit pci_init(void)while ((dev =pci_get_device (PCI_ANY_ID ,PCI_ANY_ID , dev)) !=NULL ) {pci_fixup_device (pci_fixup_final, dev); +pci_dev_put (dev); }return 0 ; }=====
drivers/pci/quirks.c1.55 vs edited =====drivers/pci/quirks.c +1
-0@@ -38,6 +38,7 @@ static void __devinit quirk_passive_rele dlc |=1 <<1 ;pci_write_config_byte (d,0x82 , dlc); } +pci_dev_put (d); } } DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82441, quirk_passive_release);
=====drivers/pci/setup-irq.c1.5 vs edited =====drivers/pci/setup-irq.c +1
-0@@ -67,5 +67,6 @@ pci_fixup_irqs(u8 (*swizzle)(struct pci_struct pci_dev *dev =NULL ;while ((dev =pci_get_device (PCI_ANY_ID ,PCI_ANY_ID , dev)) !=NULL ) {pdev_fixup_irq (dev, swizzle, map_irq); +pci_dev_put (dev); } }