Re: [SCSI] gdth: update deprecated pci_find_device

From: James Bottomley
Date: Thu Feb 14 2008 - 09:50:38 EST



On Wed, 2008-02-13 at 23:43 -0500, Jeff Garzik wrote:
> Linux Kernel Mailing List wrote:
> > Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=99109301d103fbf0de43fc5a580a406c12a501e0
> > Commit: 99109301d103fbf0de43fc5a580a406c12a501e0
> > Parent: 61c92814dc324b541391757062ff02fbf3b08086
> > Author: Sergio Luis <sergio@xxxxxxxxxxxxxx>
> > AuthorDate: Tue Feb 12 20:48:03 2008 -0300
> > Committer: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx>
> > CommitDate: Wed Feb 13 09:33:10 2008 -0600
> >
> > [SCSI] gdth: update deprecated pci_find_device
> >
> > Fix compilation warning in gdth.c, which was using the deprecated
> > pci_find_device.
> >
> > drivers/scsi/gdth.c:645: warning: 'pci_find_device' is deprecated (declared at include/linux/pci.h:495)
> >
> > Changing it to use pci_get_device, instead.
> >
> > Signed-off-by: Sergio Luis <sergio@xxxxxxxxxxxxxx>
> > Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx>
> > ---
> > drivers/scsi/Kconfig | 2 +-
> > drivers/scsi/gdth.c | 7 +++++--
> > 2 files changed, 6 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
> > index a5f0aaa..a7a0813 100644
> > --- a/drivers/scsi/Kconfig
> > +++ b/drivers/scsi/Kconfig
> > @@ -722,7 +722,7 @@ config SCSI_FD_MCS
> >
> > config SCSI_GDTH
> > tristate "Intel/ICP (former GDT SCSI Disk Array) RAID Controller support"
> > - depends on (ISA || EISA || PCI) && SCSI && ISA_DMA_API && PCI_LEGACY
> > + depends on (ISA || EISA || PCI) && SCSI && ISA_DMA_API
> > ---help---
> > Formerly called GDT SCSI Disk Array Controller Support.
> >
> > diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c
> > index 7079fef..6d67f5c 100644
> > --- a/drivers/scsi/gdth.c
> > +++ b/drivers/scsi/gdth.c
> > @@ -642,12 +642,15 @@ static void __init gdth_search_dev(gdth_pci_str *pcistr, ushort *cnt,
> > *cnt, vendor, device));
> >
> > pdev = NULL;
> > - while ((pdev = pci_find_device(vendor, device, pdev))
> > + while ((pdev = pci_get_device(vendor, device, pdev))
> > != NULL) {
> > if (pci_enable_device(pdev))
> > continue;
> > - if (*cnt >= MAXHA)
> > + if (*cnt >= MAXHA) {
> > + pci_dev_put(pdev);
> > return;
> > + }
> > +
>
> Why no pci_dev_put() in the module cleanup path?

Because the pci dev is never got ... nasty I know, but it's the way this
driver works.

the while (pci_get_device()) runs until the device returned is NULL. At
that point, every PCI device it ever returned has been put. The only
problem is premature exit from the while loop, which is why I made the
original author do a put along that path.

James


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/