From: Eric Kerin <eric@bootseg.com>
To: linux-scsi@vger.kernel.org
Subject: [PATCH] 2.6.0 aic7xxx and aic79xx stale pci_device list entry
Date: Fri, 02 Jan 2004 15:50:55 -0500 [thread overview]
Message-ID: <1073076654.2048.19.camel@opiate> (raw)
Loading the aic7xxx or aic79xx modules, on a machine that did not
contain the card, left a stale entry in the pci_device list. This
caused an oops upon loading the next module that registered a
pci_device.
The patches below will unregister the pci_device if it successfully
registers the device, but does not find any cards.
Comments are appreciated.
Also, I created a bug in bugzilla.kernel.org for this (before I got in
the mood to fix it myself). What should I do about closing it out?
Attach the patch, or put "posted fix to linux-scsi mailing list"?
Eric Kerin
diff -puN aic7xxx_osm.c aic7xxx_osm.c.oopsfix
--- aic7xxx_osm.c 2004-01-02 03:56:32.606291000 -0500
+++ aic7xxx_osm.c.oopsfix 2004-01-02 03:53:15.236291000 -0500
@@ -844,7 +844,8 @@ ahc_linux_detect(Scsi_Host_Template *tem
{
struct ahc_softc *ahc;
int found;
-
+ int pci_reg_stat;
+
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
/*
* It is a bug that the upper layer takes
@@ -891,8 +892,9 @@ ahc_linux_detect(Scsi_Host_Template *tem
*/
ahc_list_lockinit();
+ pci_reg_stat = -1;
#ifdef CONFIG_PCI
- ahc_linux_pci_init();
+ pci_reg_stat = ahc_linux_pci_init();
#endif
#ifdef CONFIG_EISA
@@ -913,7 +915,24 @@ ahc_linux_detect(Scsi_Host_Template *tem
spin_lock_irq(&io_request_lock);
#endif
aic7xxx_detect_complete++;
- return (found);
+ if(found){
+ return (found);
+ }
+
+ /*
+ * Cleanup everything we registered,
+ * because we didn't find any cards.
+ */
+
+#ifdef CONFIG_PCI
+ if(pci_reg_stat == 0){
+ ahc_linux_pci_exit();
+ }
+#endif
+#ifdef CONFIG_EISA
+ ahc_linux_eisa_exit();
+#endif
+ return 0;
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
diff -puN aic79xx_osm.c aic79xx_osm.c.oopsfix
--- aic79xx_osm.c 2004-01-02 02:46:43.000000000 -0500
+++ aic79xx_osm.c.oopsfix 2004-01-02 03:54:43.846291000 -0500
@@ -856,7 +856,8 @@ ahd_linux_detect(Scsi_Host_Template *tem
{
struct ahd_softc *ahd;
int found;
-
+ int pci_reg_stat;
+
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
/*
* It is a bug that the upper layer takes
@@ -906,8 +907,9 @@ ahd_linux_detect(Scsi_Host_Template *tem
*/
ahd_list_lockinit();
+ pci_reg_stat = -1;
#ifdef CONFIG_PCI
- ahd_linux_pci_init();
+ pci_reg_stat = ahd_linux_pci_init();
#endif
/*
@@ -924,7 +926,20 @@ ahd_linux_detect(Scsi_Host_Template *tem
spin_lock_irq(&io_request_lock);
#endif
aic79xx_detect_complete++;
- return (found);
+ if(found){
+ return (found);
+ }
+
+ /*
+ * Cleanup everything we registered,
+ * because we didn't find any cards.
+ */
+#ifdef CONFIG_PCI
+ if(pci_reg_stat == 0){
+ ahd_linux_pci_exit();
+ }
+#endif
+ return 0;
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
next reply other threads:[~2004-01-02 20:55 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-01-02 20:50 Eric Kerin [this message]
2004-01-03 9:01 ` [PATCH] 2.6.0 aic7xxx and aic79xx stale pci_device list entry Arjan van de Ven
2004-01-03 11:12 ` Eric Kerin
2004-01-03 13:59 ` Jan-Benedict Glaw
2004-01-24 16:09 ` Eric Kerin
2004-01-03 22:24 ` Justin T. Gibbs
2004-01-04 10:04 ` Arjan van de Ven
2004-01-30 5:25 ` Justin T. Gibbs
2004-01-30 14:41 ` Arjan van de Ven
2004-01-30 15:03 ` Justin T. Gibbs
2004-01-03 22:24 ` Justin T. Gibbs
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1073076654.2048.19.camel@opiate \
--to=eric@bootseg.com \
--cc=linux-scsi@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.