The patch titled mtd: switch to pci_get_device and do ref counting has been removed from the -mm tree. Its filename is pci-mtd-switch-to-pci_get_device-and-do-ref-counting.patch This patch was dropped because it was merged into mainline or a subsystem tree ------------------------------------------------------ Subject: mtd: switch to pci_get_device and do ref counting From: Alan Cox <alan@xxxxxxxxxxxxxxxxxxx> Signed-off-by: Alan Cox <alan@xxxxxxxxxx> Cc: Greg KH <greg@xxxxxxxxx> Cc: David Woodhouse <dwmw2@xxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- drivers/mtd/devices/pmc551.c | 11 ++++++++++- drivers/mtd/maps/amd76xrom.c | 5 +++-- drivers/mtd/maps/ichxrom.c | 3 ++- drivers/mtd/maps/l440gx.c | 12 ++++++++++-- drivers/mtd/maps/scx200_docflash.c | 9 +++++++-- 5 files changed, 32 insertions(+), 8 deletions(-) diff -puN drivers/mtd/devices/pmc551.c~pci-mtd-switch-to-pci_get_device-and-do-ref-counting drivers/mtd/devices/pmc551.c --- a/drivers/mtd/devices/pmc551.c~pci-mtd-switch-to-pci_get_device-and-do-ref-counting +++ a/drivers/mtd/devices/pmc551.c @@ -674,7 +674,7 @@ static int __init init_pmc551(void) */ for( count = 0; count < MAX_MTD_DEVICES; count++ ) { - if ((PCI_Device = pci_find_device(PCI_VENDOR_ID_V3_SEMI, + if ((PCI_Device = pci_get_device(PCI_VENDOR_ID_V3_SEMI, PCI_DEVICE_ID_V3_SEMI_V370PDC, PCI_Device ) ) == NULL) { break; @@ -783,6 +783,10 @@ static int __init init_pmc551(void) kfree(mtd); break; } + + /* Keep a reference as the add_mtd_device worked */ + pci_dev_get(PCI_Device); + printk(KERN_NOTICE "Registered pmc551 memory device.\n"); printk(KERN_NOTICE "Mapped %dM of memory from 0x%p to 0x%p\n", priv->asize>>20, @@ -797,6 +801,10 @@ static int __init init_pmc551(void) found++; } + /* Exited early, reference left over */ + if (PCI_Device) + pci_dev_put(PCI_Device); + if( !pmc551list ) { printk(KERN_NOTICE "pmc551: not detected\n"); return -ENODEV; @@ -824,6 +832,7 @@ static void __exit cleanup_pmc551(void) priv->asize>>20, priv->start); iounmap (priv->start); } + pci_dev_put(priv->dev); kfree (mtd->priv); del_mtd_device (mtd); diff -puN drivers/mtd/maps/amd76xrom.c~pci-mtd-switch-to-pci_get_device-and-do-ref-counting drivers/mtd/maps/amd76xrom.c --- a/drivers/mtd/maps/amd76xrom.c~pci-mtd-switch-to-pci_get_device-and-do-ref-counting +++ a/drivers/mtd/maps/amd76xrom.c @@ -57,6 +57,7 @@ static void amd76xrom_cleanup(struct amd /* Disable writes through the rom window */ pci_read_config_byte(window->pdev, 0x40, &byte); pci_write_config_byte(window->pdev, 0x40, byte & ~1); + pci_dev_put(window->pdev); } /* Free all of the mtd devices */ @@ -91,7 +92,7 @@ static int __devinit amd76xrom_init_one struct amd76xrom_map_info *map = NULL; unsigned long map_top; - /* Remember the pci dev I find the window in */ + /* Remember the pci dev I find the window in - already have a ref */ window->pdev = pdev; /* Assume the rom window is properly setup, and find it's size */ @@ -302,7 +303,7 @@ static int __init init_amd76xrom(void) struct pci_device_id *id; pdev = NULL; for(id = amd76xrom_pci_tbl; id->vendor; id++) { - pdev = pci_find_device(id->vendor, id->device, NULL); + pdev = pci_get_device(id->vendor, id->device, NULL); if (pdev) { break; } diff -puN drivers/mtd/maps/ichxrom.c~pci-mtd-switch-to-pci_get_device-and-do-ref-counting drivers/mtd/maps/ichxrom.c --- a/drivers/mtd/maps/ichxrom.c~pci-mtd-switch-to-pci_get_device-and-do-ref-counting +++ a/drivers/mtd/maps/ichxrom.c @@ -61,6 +61,7 @@ static void ichxrom_cleanup(struct ichxr /* Disable writes through the rom window */ pci_read_config_word(window->pdev, BIOS_CNTL, &word); pci_write_config_word(window->pdev, BIOS_CNTL, word & ~1); + pci_dev_put(window->pdev); /* Free all of the mtd devices */ list_for_each_entry_safe(map, scratch, &window->maps, list) { @@ -355,7 +356,7 @@ static int __init init_ichxrom(void) pdev = NULL; for (id = ichxrom_pci_tbl; id->vendor; id++) { - pdev = pci_find_device(id->vendor, id->device, NULL); + pdev = pci_get_device(id->vendor, id->device, NULL); if (pdev) { break; } diff -puN drivers/mtd/maps/l440gx.c~pci-mtd-switch-to-pci_get_device-and-do-ref-counting drivers/mtd/maps/l440gx.c --- a/drivers/mtd/maps/l440gx.c~pci-mtd-switch-to-pci_get_device-and-do-ref-counting +++ a/drivers/mtd/maps/l440gx.c @@ -61,14 +61,17 @@ static int __init init_l440gx(void) struct resource *pm_iobase; __u16 word; - dev = pci_find_device(PCI_VENDOR_ID_INTEL, + dev = pci_get_device(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_0, NULL); - pm_dev = pci_find_device(PCI_VENDOR_ID_INTEL, + pm_dev = pci_get_device(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_3, NULL); + pci_dev_put(dev); + if (!dev || !pm_dev) { printk(KERN_NOTICE "L440GX flash mapping: failed to find PIIX4 ISA bridge, cannot continue\n"); + pci_dev_put(pm_dev); return -ENODEV; } @@ -76,6 +79,7 @@ static int __init init_l440gx(void) if (!l440gx_map.virt) { printk(KERN_WARNING "Failed to ioremap L440GX flash region\n"); + pci_dev_put(pm_dev); return -ENOMEM; } simple_map_init(&l440gx_map); @@ -99,8 +103,12 @@ static int __init init_l440gx(void) pm_iobase->start += iobase & ~1; pm_iobase->end += iobase & ~1; + pci_dev_put(pm_dev); + /* Allocate the resource region */ if (pci_assign_resource(pm_dev, PIIXE_IOBASE_RESOURCE) != 0) { + pci_dev_put(dev); + pci_dev_put(pm_dev); printk(KERN_WARNING "Could not allocate pm iobase resource\n"); iounmap(l440gx_map.virt); return -ENXIO; diff -puN drivers/mtd/maps/scx200_docflash.c~pci-mtd-switch-to-pci_get_device-and-do-ref-counting drivers/mtd/maps/scx200_docflash.c --- a/drivers/mtd/maps/scx200_docflash.c~pci-mtd-switch-to-pci_get_device-and-do-ref-counting +++ a/drivers/mtd/maps/scx200_docflash.c @@ -87,19 +87,23 @@ static int __init init_scx200_docflash(v printk(KERN_DEBUG NAME ": NatSemi SCx200 DOCCS Flash Driver\n"); - if ((bridge = pci_find_device(PCI_VENDOR_ID_NS, + if ((bridge = pci_get_device(PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_SCx200_BRIDGE, NULL)) == NULL) return -ENODEV; /* check that we have found the configuration block */ - if (!scx200_cb_present()) + if (!scx200_cb_present()) { + pci_dev_put(bridge); return -ENODEV; + } if (probe) { /* Try to use the present flash mapping if any */ pci_read_config_dword(bridge, SCx200_DOCCS_BASE, &base); pci_read_config_dword(bridge, SCx200_DOCCS_CTRL, &ctrl); + pci_dev_put(bridge); + pmr = inl(scx200_cb_base + SCx200_PMR); if (base == 0 @@ -127,6 +131,7 @@ static int __init init_scx200_docflash(v return -ENOMEM; } } else { + pci_dev_put(bridge); for (u = size; u > 1; u >>= 1) ; if (u != 1) { _ Patches currently in -mm which might be from alan@xxxxxxxxxxxxxxxxxxx are origin.patch git-libata-all.patch libata-add-40pin-short-cable-support-honour-drive.patch 1-of-2-jmicron-driver.patch 1-of-2-jmicron-driver-fix.patch 2-of-2-jmicron-driver-plumbing-and-quirk.patch non-libata-driver-for-jmicron-devices.patch via-pata-controller-xfer-fixes.patch via-pata-controller-xfer-fixes-fix.patch git-netdev-all.patch pci-quirks-update.patch megaraid-gcc-41-warning-fix.patch alchemy-delete-unused-pt_regs-argument-from-au1xxx_dbdma_chan_alloc.patch voyager-tty-locking.patch uml-tty-locking.patch edac-new-opteron-athlon64-memory-controller-driver.patch edac-new-opteron-athlon64-memory-controller-driver-tidy.patch make-prot_write-imply-prot_read.patch remove-unused-tty_struct-variable.patch there-is-no-devfs-there-has-never-been-a-devfs-we-have.patch tty-locking-on-resize.patch ahci-ati-sb600-sata-support-for-various-modes.patch atiixp-ati-sb600-ide-support-for-various-modes.patch dquot-add-proper-locking-when-using-current-signal-tty.patch tty-trivial-kzalloc-opportunity.patch tty-lock-ticogwinsz.patch tty-stop-the-tty-vanishing-under-procfs-access.patch exit-fix-crash-case.patch tty-make-termios_sem-a-mutex.patch tty-make-termios_sem-a-mutex-fix.patch solaris-emulation-incorrect-tty-locking.patch tty-fix-bits-and-note-more-bits-to-fix.patch build-sound-sound_firmwarec-only-for-oss.patch build-sound-sound_firmwarec-only-for-oss-doc.patch generic_serial-remove-private-decoding-of-baud-rate-bits.patch istallion-remove-private-baud-rate-decoding-which-is.patch specialix-remove-private-speed-decoding.patch fix-locking-for-tty-drivers-when-doing-urgent-characters.patch audit-accounting-tty-locking.patch serial-fix-up-offenders-peering-at-baud-bits-directly.patch pci-via82cxxx_audio-use-pci_get_device.patch pci-cs46xx-oss-switch-to-pci_get_device.patch pci-piix-use-refcounted-interface-when-searching-for-a-450nx.patch pci-serverworks-switch-to-pci-refcounted-interfaces.patch pci-sis5513-switch-to-pci-refcounting.patch pci-via-switch-to-pci_get_device-refcounted-pci-api.patch support-piping-into-commands-in-proc-sys-kernel-core_pattern.patch support-piping-into-commands-in-proc-sys-kernel-core_pattern-fix-2.patch pci-mxser-pci-refcounts.patch mxser-make-an-experimental-clone.patch ide-claim-extra-dma-ports-regardless-of-channel.patch ide-always-release-dma-engine.patch ide-error-handling-fixes.patch ide-hpt3xxn-clocking-fixes.patch ide-fix-hpt37x-timing-tables.patch ide-optimize-hpt37x-timing-tables.patch ide-fix-hpt3xx-hotswap-support.patch ide-fix-the-case-of-multiple-hpt3xx-chips-present.patch ide-hpt3xx-fix-pci-clock-detection.patch ide-hpt3xx-fix-pci-clock-detection-fix-2.patch piix-fix-82371mx-enablebits.patch piix-remove-check-for-broken-mw-dma-mode-0.patch piix-slc90e66-pio-mode-fallback-fix.patch make-number-of-ide-interfaces-configurable.patch ide_dma_speed-fixes.patch hpt3xx-rework-rate-filtering.patch hpt3xx-rework-rate-filtering-tidy.patch hpt3xx-print-the-real-chip-name-at-startup.patch hpt3xx-switch-to-using-pci_get_slot.patch hpt3xx-cache-channels-mcr-address.patch hpt3x7-merge-speedproc-handlers.patch hpt370-clean-up-dma-timeout-handling.patch enable-cdrom-dma-access-with-pdc20265_old.patch ide-fix-revision-comparison-in-ide_in_drive_list.patch ide-backport-piix-fixes-from-libata-into-the-legacy-driver.patch hpt3xx-init-code-rewrite.patch move-ide-to-unmaintained-drop-reference-to-old-git-tree.patch drivers-ide-cleanups.patch ide-remove-dma_base2-field-from-ide_hwif_t.patch ide-reprogram-disk-pio-timings-on-resume.patch config_pm=n-slim-drivers-ide-pci-sc1200c.patch ide-fix-crash-on-repeated-reset.patch ide-fix-crash-on-repeated-reset-tidy.patch sstfb-clean-ups.patch pci_module_init-convertion-in-ata_genericc.patch pci_module_init-convertion-in-ata_genericc-fix.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html