diff -u -p -b a/arch/sparc64/kernel/isa.c b/arch/sparc64/kernel/isa.c
OK send
--- a/arch/sparc64/kernel/isa.c 2007-08-12 13:27:06.000000000 +0200
+++ b/arch/sparc64/kernel/isa.c 2007-11-18 18:32:16.000000000 +0100
@@ -155,6 +155,7 @@ void __init isa_init(void)
 		isa_br = kzalloc(sizeof(*isa_br), GFP_KERNEL);
 		if (!isa_br) {
 			printk(KERN_DEBUG "isa: cannot allocate sparc_isa_bridge");
+			pci_dev_put(pdev);
 			return;
 		}
 
@@ -168,6 +169,7 @@ void __init isa_init(void)
 			printk(KERN_DEBUG "isa: device registration error for %s!\n",
 			       dp->path_component_name);
 			kfree(isa_br);
+			pci_dev_put(pdev);
 			return;
 		}
 
diff -u -p -b a/drivers/char/agp/amd64-agp.c b/drivers/char/agp/amd64-agp.c
--- a/drivers/char/agp/amd64-agp.c 2007-11-01 10:30:39.000000000 +0100
+++ b/drivers/char/agp/amd64-agp.c 2007-11-18 18:32:36.000000000 +0100
NOT SURE
@@ -771,6 +771,7 @@ int __init agp_amd64_init(void)
 			/* Only one bridge supported right now */
 			if (agp_amd64_probe(dev, NULL) == 0) {
 				err = 0;
+				pci_dev_put(dev);
 				break;
 			}
 		}
diff -u -p -b a/drivers/char/applicom.c b/drivers/char/applicom.c
--- a/drivers/char/applicom.c 2006-11-30 19:04:20.000000000 +0100
+++ b/drivers/char/applicom.c 2007-11-18 18:32:39.000000000 +0100
@@ -204,7 +204,9 @@ static int __init applicom_init(void)
 			continue;
 		
 		if (pci_enable_device(dev))
-			return -EIO;
+			{
+			pci_dev_put(dev);
+			return -EIO;}
 
 		RamIO = ioremap(dev->resource[0].start, LEN_RAM_IO);
 
@@ -213,6 +215,7 @@ static int __init applicom_init(void)
 				"space at 0x%llx\n",
 				(unsigned long long)dev->resource[0].start);
 			pci_disable_device(dev);
+			pci_dev_put(dev);
 			return -EIO;
 		}
 
diff -u -p -b a/drivers/macintosh/via-pmu.c b/drivers/macintosh/via-pmu.c
--- a/drivers/macintosh/via-pmu.c 2007-10-22 11:25:10.000000000 +0200
+++ b/drivers/macintosh/via-pmu.c 2007-11-18 18:33:24.000000000 +0100
OK sent
@@ -1897,7 +1897,9 @@ pbook_pci_restore(void)
 		pci_write_config_dword(pd, 4, ps->config[1]);
 #else
 		if (npci-- == 0)
-			return;
+			{
+			pci_dev_put(pd);
+			return;}
 		ps++;
 		if (ps->command == 0)
 			continue;
diff -u -p -b a/drivers/mmc/host/ricoh_mmc.c b/drivers/mmc/host/ricoh_mmc.c
--- a/drivers/mmc/host/ricoh_mmc.c 2007-11-18 16:56:19.000000000 +0100
+++ b/drivers/mmc/host/ricoh_mmc.c 2007-11-18 18:33:44.000000000 +0100
@@ -68,6 +68,7 @@ static int __devinit ricoh_mmc_probe(str
 			if (disable & 0x02) {
 				printk(KERN_INFO DRIVER_NAME
 				       ": Controller already disabled. Nothing to do.\n");
+				pci_dev_put(fw_dev);
 				return -ENODEV;
 			}
 
@@ -81,6 +82,7 @@ static int __devinit ricoh_mmc_probe(str
 			printk(KERN_INFO DRIVER_NAME
 			       ": Controller is now disabled.\n");
 
+			pci_dev_put(fw_dev);
 			break;
 		}
 	}
diff -u -p -b a/drivers/net/s2io.c b/drivers/net/s2io.c
--- a/drivers/net/s2io.c 2007-11-15 15:09:36.000000000 +0100
+++ b/drivers/net/s2io.c 2007-11-18 18:34:15.000000000 +0100
BIZARRE submitted
@@ -983,6 +983,7 @@ static int s2io_on_nec_bridge(struct pci
 		if (tdev->vendor == NEC_VENID && tdev->device == NEC_DEVID) {
 			if (tdev->bus == s2io_pdev->bus->parent)
 				pci_dev_put(tdev);
+				pci_dev_put(tdev);
 				return 1;
 		}
 	}
diff -u -p -b a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
OK sent
--- a/drivers/pci/pci-sysfs.c 2007-07-20 17:45:56.000000000 +0200
+++ b/drivers/pci/pci-sysfs.c 2007-11-18 18:34:41.000000000 +0100
@@ -703,7 +703,9 @@ static int __init pci_sysfs_init(void)
 	for_each_pci_dev(pdev) {
 		retval = pci_create_sysfs_dev_files(pdev);
 		if (retval)
-			return retval;
+			{
+			pci_dev_put(pdev);
+			return retval;}
 	}
 
 	return 0;
diff -u -p -b a/drivers/pnp/resource.c b/drivers/pnp/resource.c
OK sent
--- a/drivers/pnp/resource.c 2007-10-22 11:25:20.000000000 +0200
+++ b/drivers/pnp/resource.c 2007-11-18 18:34:46.000000000 +0100
@@ -368,7 +368,9 @@ int pnp_check_irq(struct pnp_dev *dev, i
 		struct pci_dev *pci = NULL;
 		for_each_pci_dev(pci) {
 			if (pci->irq == *irq)
-				return 0;
+				{
+				pci_dev_put(pci);
+				return 0;}
 		}
 	}
 #endif
diff -u -p -b a/drivers/scsi/dpt_i2o.c b/drivers/scsi/dpt_i2o.c
--- a/drivers/scsi/dpt_i2o.c 2007-10-22 11:25:23.000000000 +0200
+++ b/drivers/scsi/dpt_i2o.c 2007-11-18 18:36:30.000000000 +0100
NOT SURE
code is written in an inconsistent manner, such that adpt_install_hba
might do a put on pDev, or might not
@@ -189,6 +189,7 @@ static int adpt_detect(void)
 			if(adpt_install_hba(pDev) ){
 				PERROR("Could not Init an I2O RAID device\n");
 				PERROR("Will not try to detect others.\n");
+				pci_dev_put(pDev);
 				return hba_count-1;
 			}
 			pci_dev_get(pDev);
diff -u -p -b a/drivers/watchdog/iTCO_wdt.c b/drivers/watchdog/iTCO_wdt.c
NO.  iTCO_wdt_init does put.
--- a/drivers/watchdog/iTCO_wdt.c 2007-11-08 08:00:52.000000000 +0100
+++ b/drivers/watchdog/iTCO_wdt.c 2007-11-18 18:37:09.000000000 +0100
@@ -740,6 +740,7 @@ static int __devinit iTCO_wdt_probe(stru
 		if (ent) {
 			if (!(iTCO_wdt_init(pdev, ent, dev))) {
 				found++;
+				pci_dev_put(pdev);
 				break;
 			}
 		}
diff -u -p -b a/sound/core/memalloc.c b/sound/core/memalloc.c
OK sent
--- a/sound/core/memalloc.c 2007-10-22 11:25:51.000000000 +0200
+++ b/sound/core/memalloc.c 2007-11-18 18:38:21.000000000 +0100
@@ -568,6 +568,7 @@ static ssize_t snd_mem_proc_write(struct
 				if (pci_set_dma_mask(pci, mask) < 0 ||
 				    pci_set_consistent_dma_mask(pci, mask) < 0) {
 					printk(KERN_ERR "snd-page-alloc: cannot set DMA mask %lx for pci %04x:%04x\n", mask, vendor, device);
+					pci_dev_put(pci);
 					return count;
 				}
 			}
