lkml.org 
[lkml]   [2004]   [Oct]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
SubjectRe: [PATCH] PCI fixes for 2.6.9
Date
From
ChangeSet 1.1997.37.61, 2004/10/06 14:07:54-07:00, greg@kroah.com

[PATCH] PCI: audit all callers of pci_register_driver() to work properly.

No, pci_register_driver() does not return the number of pci devices found, sorry.
No, if pci_register_driver() fails, you do not need to call pci_unregister_driver().

Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>


drivers/atm/eni.c | 4 +---
drivers/atm/firestream.c | 12 ++----------
drivers/atm/idt77252.c | 6 +-----
drivers/block/cpqarray.c | 4 ++--
drivers/char/epca.c | 13 +------------
drivers/isdn/hisax/hisax_fcpcipnp.c | 12 +-----------
drivers/misc/ibmasm/module.c | 6 +++---
drivers/net/dgrs.c | 4 ++--
drivers/net/hamachi.c | 5 +----
drivers/net/irda/via-ircc.c | 10 +---------
drivers/net/tokenring/abyss.c | 9 +--------
drivers/net/tokenring/tmspci.c | 9 +--------
drivers/parport/parport_pc.c | 8 ++++----
drivers/video/i810/i810_main.c | 10 ++--------
drivers/video/riva/fbdev.c | 5 +----
sound/oss/ali5455.c | 6 +-----
sound/oss/esssolo1.c | 6 +-----
sound/oss/forte.c | 7 +------
sound/oss/i810_audio.c | 10 ++++++----
sound/oss/maestro3.c | 3 +--
sound/oss/trident.c | 6 +-----
sound/oss/via82cxxx_audio.c | 8 +++-----
22 files changed, 38 insertions(+), 125 deletions(-)


diff -Nru a/drivers/atm/eni.c b/drivers/atm/eni.c
--- a/drivers/atm/eni.c 2004-10-19 15:21:57 -07:00
+++ b/drivers/atm/eni.c 2004-10-19 15:21:57 -07:00
@@ -2290,9 +2290,7 @@
sizeof(skb->cb),sizeof(struct eni_skb_prv));
return -EIO;
}
- if (pci_register_driver(&eni_driver) > 0) return 0;
- pci_unregister_driver (&eni_driver);
- return -ENODEV;
+ return pci_register_driver(&eni_driver);
}


diff -Nru a/drivers/atm/firestream.c b/drivers/atm/firestream.c
--- a/drivers/atm/firestream.c 2004-10-19 15:21:57 -07:00
+++ b/drivers/atm/firestream.c 2004-10-19 15:21:57 -07:00
@@ -2045,7 +2045,6 @@
int __init init_PCI (void)
{ /* Begin init_PCI */

- int pci_count;
printk ("init_PCI\n");
/*
memset (&firestream_driver, 0, sizeof (firestream_driver));
@@ -2053,15 +2052,7 @@
firestream_driver.id_table = firestream_pci_tbl;
firestream_driver.probe = fs_register_and_init;
*/
- pci_count = pci_register_driver (&firestream_driver);
-
- if (pci_count <= 0) {
- pci_unregister_driver (&firestream_driver);
- pci_count = 0;
- }
-
- return(pci_count);
-
+ return pci_register_driver(&firestream_driver);
} /* End init_PCI */
#endif
#endif
@@ -2108,5 +2099,6 @@
module_exit(firestream_cleanup_module);

MODULE_LICENSE("GPL");
+


diff -Nru a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c
--- a/drivers/atm/idt77252.c 2004-10-19 15:21:57 -07:00
+++ b/drivers/atm/idt77252.c 2004-10-19 15:21:57 -07:00
@@ -3841,11 +3841,7 @@
return -EIO;
}

- if (pci_register_driver(&idt77252_driver) > 0)
- return 0;
-
- pci_unregister_driver(&idt77252_driver);
- return -ENODEV;
+ return pci_register_driver(&idt77252_driver);
}

static void __exit idt77252_exit(void)
diff -Nru a/drivers/block/cpqarray.c b/drivers/block/cpqarray.c
--- a/drivers/block/cpqarray.c 2004-10-19 15:21:57 -07:00
+++ b/drivers/block/cpqarray.c 2004-10-19 15:21:57 -07:00
@@ -569,9 +569,9 @@

/* detect controllers */
printk(DRIVER_NAME "\n");
-/* TODO: If it's an eisa only system, will rc return negative? */
+
rc = pci_register_driver(&cpqarray_pci_driver);
- if (rc < 0)
+ if (rc)
return rc;
cpqarray_eisa_detect();

diff -Nru a/drivers/char/epca.c b/drivers/char/epca.c
--- a/drivers/char/epca.c 2004-10-19 15:21:57 -07:00
+++ b/drivers/char/epca.c 2004-10-19 15:21:57 -07:00
@@ -3933,23 +3933,12 @@

int __init init_PCI (void)
{ /* Begin init_PCI */
-
- int pci_count;
-
memset (&epca_driver, 0, sizeof (epca_driver));
epca_driver.name = "epca";
epca_driver.id_table = epca_pci_tbl;
epca_driver.probe = epca_init_one;

- pci_count = pci_register_driver (&epca_driver);
-
- if (pci_count <= 0) {
- pci_unregister_driver (&epca_driver);
- pci_count = 0;
- }
-
- return(pci_count);
-
+ return pci_register_driver(&epca_driver);
} /* End init_PCI */

#endif /* ENABLE_PCI */
diff -Nru a/drivers/isdn/hisax/hisax_fcpcipnp.c b/drivers/isdn/hisax/hisax_fcpcipnp.c
--- a/drivers/isdn/hisax/hisax_fcpcipnp.c 2004-10-19 15:21:57 -07:00
+++ b/drivers/isdn/hisax/hisax_fcpcipnp.c 2004-10-19 15:21:57 -07:00
@@ -1001,22 +1001,12 @@
printk(KERN_INFO "hisax_fcpcipnp: Fritz!Card PCI/PCIv2/PnP ISDN driver v0.0.1\n");

retval = pci_register_driver(&fcpci_driver);
- if (retval < 0)
+ if (retval)
goto out;
- pci_nr_found = retval;
- retval = 0;
-
#ifdef __ISAPNP__
retval = pnp_register_driver(&fcpnp_driver);
if (retval < 0)
goto out_unregister_pci;
-#endif
-
-#if !defined(CONFIG_HOTPLUG) || defined(MODULE)
- if (pci_nr_found + retval == 0) {
- retval = -ENODEV;
- goto out_unregister_isapnp;
- }
#endif
return 0;

diff -Nru a/drivers/misc/ibmasm/module.c b/drivers/misc/ibmasm/module.c
--- a/drivers/misc/ibmasm/module.c 2004-10-19 15:21:57 -07:00
+++ b/drivers/misc/ibmasm/module.c 2004-10-19 15:21:57 -07:00
@@ -209,10 +209,9 @@
return result;
}
result = pci_register_driver(&ibmasm_driver);
- if (result <= 0) {
- pci_unregister_driver(&ibmasm_driver);
+ if (result) {
ibmasmfs_unregister();
- return -ENODEV;
+ return result;
}
ibmasm_register_panic_notifier();
info(DRIVER_DESC " version " DRIVER_VERSION " loaded");
@@ -225,3 +224,4 @@
MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_LICENSE("GPL");
+
diff -Nru a/drivers/net/dgrs.c b/drivers/net/dgrs.c
--- a/drivers/net/dgrs.c 2004-10-19 15:21:57 -07:00
+++ b/drivers/net/dgrs.c 2004-10-19 15:21:57 -07:00
@@ -1597,10 +1597,10 @@
#endif
#ifdef CONFIG_PCI
pcicount = pci_register_driver(&dgrs_pci_driver);
- if (pcicount < 0)
+ if (pcicount)
return pcicount;
#endif
- return (eisacount + pcicount) == 0 ? -ENODEV : 0;
+ return 0;
}

static void __exit dgrs_cleanup_module (void)
diff -Nru a/drivers/net/hamachi.c b/drivers/net/hamachi.c
--- a/drivers/net/hamachi.c 2004-10-19 15:21:57 -07:00
+++ b/drivers/net/hamachi.c 2004-10-19 15:21:57 -07:00
@@ -2009,10 +2009,7 @@
#ifdef MODULE
printk(version);
#endif
- if (pci_register_driver(&hamachi_driver) > 0)
- return 0;
- pci_unregister_driver(&hamachi_driver);
- return -ENODEV;
+ return pci_register_driver(&hamachi_driver);
}

static void __exit hamachi_exit (void)
diff -Nru a/drivers/net/irda/via-ircc.c b/drivers/net/irda/via-ircc.c
--- a/drivers/net/irda/via-ircc.c 2004-10-19 15:21:57 -07:00
+++ b/drivers/net/irda/via-ircc.c 2004-10-19 15:21:57 -07:00
@@ -157,15 +157,7 @@
#ifdef HEADMSG
DBG(printk(KERN_INFO "via_ircc_init :rc = %d......\n",rc));
#endif
- if (rc < 1) {
-#ifdef HEADMSG
- DBG(printk(KERN_INFO "via_ircc_init return -ENODEV......\n"));
-#endif
- if (rc == 0) pci_unregister_driver (&via_driver);
- return -ENODEV;
- }
- return 0;
-
+ return rc;
}

static int __devinit via_init_one (struct pci_dev *pcidev, const struct pci_device_id *id)
diff -Nru a/drivers/net/tokenring/abyss.c b/drivers/net/tokenring/abyss.c
--- a/drivers/net/tokenring/abyss.c 2004-10-19 15:21:57 -07:00
+++ b/drivers/net/tokenring/abyss.c 2004-10-19 15:21:57 -07:00
@@ -457,14 +457,7 @@

static int __init abyss_init (void)
{
- int rc = pci_register_driver (&abyss_driver);
- if (rc < 0)
- return rc;
- if (rc == 0) {
- pci_unregister_driver (&abyss_driver);
- return -ENODEV;
- }
- return 0;
+ return pci_register_driver(&abyss_driver);
}

static void __exit abyss_rmmod (void)
diff -Nru a/drivers/net/tokenring/tmspci.c b/drivers/net/tokenring/tmspci.c
--- a/drivers/net/tokenring/tmspci.c 2004-10-19 15:21:57 -07:00
+++ b/drivers/net/tokenring/tmspci.c 2004-10-19 15:21:57 -07:00
@@ -243,14 +243,7 @@

static int __init tms_pci_init (void)
{
- int rc = pci_register_driver (&tms_pci_driver);
- if (rc < 0)
- return rc;
- if (rc == 0) {
- pci_unregister_driver (&tms_pci_driver);
- return -ENODEV;
- }
- return 0;
+ return pci_register_driver(&tms_pci_driver);
}

static void __exit tms_pci_rmmod (void)
diff -Nru a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c
--- a/drivers/parport/parport_pc.c 2004-10-19 15:21:57 -07:00
+++ b/drivers/parport/parport_pc.c 2004-10-19 15:21:57 -07:00
@@ -3039,10 +3039,10 @@
count += parport_pc_find_nonpci_ports (autoirq, autodma);

r = pci_register_driver (&parport_pc_pci_driver);
- if (r >= 0) {
- pci_registered_parport = 1;
- count += r;
- }
+ if (r)
+ return r;
+ pci_registered_parport = 1;
+ count += 1;

return count;
}
diff -Nru a/drivers/video/i810/i810_main.c b/drivers/video/i810/i810_main.c
--- a/drivers/video/i810/i810_main.c 2004-10-19 15:21:57 -07:00
+++ b/drivers/video/i810/i810_main.c 2004-10-19 15:21:57 -07:00
@@ -1995,10 +1995,7 @@
return -ENODEV;
i810fb_setup(option);

- if (pci_register_driver(&i810fb_driver) > 0)
- return 0;
- pci_unregister_driver(&i810fb_driver);
- return -ENODEV;
+ return pci_register_driver(&i810fb_driver);
}
#endif

@@ -2013,10 +2010,7 @@
hsync1 *= 1000;
hsync2 *= 1000;

- if (pci_register_driver(&i810fb_driver) > 0)
- return 0;
- pci_unregister_driver(&i810fb_driver);
- return -ENODEV;
+ return pci_register_driver(&i810fb_driver);
}

MODULE_PARM(vram, "i");
diff -Nru a/drivers/video/riva/fbdev.c b/drivers/video/riva/fbdev.c
--- a/drivers/video/riva/fbdev.c 2004-10-19 15:21:57 -07:00
+++ b/drivers/video/riva/fbdev.c 2004-10-19 15:21:57 -07:00
@@ -2147,10 +2147,7 @@
return -ENODEV;
rivafb_setup(option);
#endif
- if (pci_register_driver(&rivafb_driver) > 0)
- return 0;
- pci_unregister_driver(&rivafb_driver);
- return -ENODEV;
+ return pci_register_driver(&rivafb_driver);
}


diff -Nru a/sound/oss/ali5455.c b/sound/oss/ali5455.c
--- a/sound/oss/ali5455.c 2004-10-19 15:21:57 -07:00
+++ b/sound/oss/ali5455.c 2004-10-19 15:21:57 -07:00
@@ -3713,11 +3713,7 @@
controller_pcmout_share_spdif_locked = 0;
}
}
- if (!pci_register_driver(&ali_pci_driver)) {
- pci_unregister_driver(&ali_pci_driver);
- return -ENODEV;
- }
- return 0;
+ return pci_register_driver(&ali_pci_driver);
}

static void __exit ali_cleanup_module(void)
diff -Nru a/sound/oss/esssolo1.c b/sound/oss/esssolo1.c
--- a/sound/oss/esssolo1.c 2004-10-19 15:21:57 -07:00
+++ b/sound/oss/esssolo1.c 2004-10-19 15:21:57 -07:00
@@ -2451,11 +2451,7 @@
static int __init init_solo1(void)
{
printk(KERN_INFO "solo1: version v0.20 time " __TIME__ " " __DATE__ "\n");
- if (!pci_register_driver(&solo1_driver)) {
- pci_unregister_driver(&solo1_driver);
- return -ENODEV;
- }
- return 0;
+ return pci_register_driver(&solo1_driver);
}

/* --------------------------------------------------------------------- */
diff -Nru a/sound/oss/forte.c b/sound/oss/forte.c
--- a/sound/oss/forte.c 2004-10-19 15:21:57 -07:00
+++ b/sound/oss/forte.c 2004-10-19 15:21:57 -07:00
@@ -2111,12 +2111,7 @@
{
printk (KERN_INFO PFX DRIVER_VERSION "\n");

- if (!pci_register_driver (&forte_pci_driver)) {
- pci_unregister_driver (&forte_pci_driver);
- return -ENODEV;
- }
-
- return 0;
+ return pci_register_driver (&forte_pci_driver);
}


diff -Nru a/sound/oss/i810_audio.c b/sound/oss/i810_audio.c
--- a/sound/oss/i810_audio.c 2004-10-19 15:21:57 -07:00
+++ b/sound/oss/i810_audio.c 2004-10-19 15:21:57 -07:00
@@ -3483,13 +3483,15 @@

static int __init i810_init_module (void)
{
+ int retval;
+
printk(KERN_INFO "Intel 810 + AC97 Audio, version "
DRIVER_VERSION ", " __TIME__ " " __DATE__ "\n");

- if (!pci_register_driver(&i810_pci_driver)) {
- pci_unregister_driver(&i810_pci_driver);
- return -ENODEV;
- }
+ retval = pci_register_driver(&i810_pci_driver);
+ if (retval)
+ return retval;
+
if(ftsodell != 0) {
printk("i810_audio: ftsodell is now a deprecated option.\n");
}
diff -Nru a/sound/oss/maestro3.c b/sound/oss/maestro3.c
--- a/sound/oss/maestro3.c 2004-10-19 15:21:57 -07:00
+++ b/sound/oss/maestro3.c 2004-10-19 15:21:57 -07:00
@@ -2940,8 +2940,7 @@
return -ENODEV; /* ? */
}

- if (!pci_register_driver(&m3_pci_driver)) {
- pci_unregister_driver(&m3_pci_driver);
+ if (pci_register_driver(&m3_pci_driver)) {
unregister_reboot_notifier(&m3_reboot_nb);
return -ENODEV;
}
diff -Nru a/sound/oss/trident.c b/sound/oss/trident.c
--- a/sound/oss/trident.c 2004-10-19 15:21:57 -07:00
+++ b/sound/oss/trident.c 2004-10-19 15:21:57 -07:00
@@ -4594,11 +4594,7 @@
"5050 PCI Audio, version " DRIVER_VERSION ", " __TIME__ " "
__DATE__ "\n");

- if (!pci_register_driver(&trident_pci_driver)) {
- pci_unregister_driver(&trident_pci_driver);
- return -ENODEV;
- }
- return 0;
+ return pci_register_driver(&trident_pci_driver);
}

static void __exit
diff -Nru a/sound/oss/via82cxxx_audio.c b/sound/oss/via82cxxx_audio.c
--- a/sound/oss/via82cxxx_audio.c 2004-10-19 15:21:57 -07:00
+++ b/sound/oss/via82cxxx_audio.c 2004-10-19 15:21:57 -07:00
@@ -3622,12 +3622,10 @@
}

rc = pci_register_driver (&via_driver);
- if (rc < 1) {
- if (rc == 0)
- pci_unregister_driver (&via_driver);
+ if (rc) {
via_cleanup_proc ();
- DPRINTK ("EXIT, returning -ENODEV\n");
- return -ENODEV;
+ DPRINTK ("EXIT, returning %d\n", rc);
+ return rc;
}

DPRINTK ("EXIT, returning 0\n");
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 14:07    [W:1.670 / U:0.084 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site