All of lore.kernel.org
 help / color / mirror / Atom feed
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)



             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.