From: Mark Bellon <mbellon@mvista.com>
To: linux-scsi@vger.kernel.org
Subject: [PATCH] 2.4.28 - AIC driver causes kernel corruption (as a module)
Date: Tue, 11 Jan 2005 12:24:03 -0700 [thread overview]
Message-ID: <41E427D3.2020201@mvista.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 454 bytes --]
Didn't see a patch for this and the problem is in the 2.4.28 sources.
The scsi_register_module call from within ah[cd]_linux_init causes the
detect routine to be called. The detect routine calls
ah[cd]_linux_pci_init which does a pci_register_driver call. If no
hardware is found in the detect routine, ah[cd]_linux_init will exit
without calling pci_unregister_driver leaving the kernel with pointers
to a driver that never really loaded.
mark
[-- Attachment #2: scsi-patch --]
[-- Type: text/plain, Size: 1564 bytes --]
Index: drivers/scsi/aic7xxx/aic79xx_osm.c
===================================================================
RCS file: /cvsdev/mvl-kernel/linux/drivers/scsi/aic7xxx/aic79xx_osm.c,v
retrieving revision 1.2.4.2.12.4
diff -a -u -r1.2.4.2.12.4 aic79xx_osm.c
--- drivers/scsi/aic7xxx/aic79xx_osm.c 12 Feb 2004 15:33:49 -0000 1.2.4.2.12.4
+++ drivers/scsi/aic7xxx/aic79xx_osm.c 11 Jan 2005 18:46:42 -0000
@@ -5079,6 +5079,8 @@
}
}
+static void ahd_linux_exit(void);
+
static int __init
ahd_linux_init(void)
{
@@ -5087,8 +5089,7 @@
#else
scsi_register_module(MODULE_SCSI_HA, &aic79xx_driver_template);
if (aic79xx_driver_template.present == 0) {
- scsi_unregister_module(MODULE_SCSI_HA,
- &aic79xx_driver_template);
+ ahd_linux_exit();
return (-ENODEV);
}
Index: drivers/scsi/aic7xxx/aic7xxx_osm.c
===================================================================
RCS file: /cvsdev/mvl-kernel/linux/drivers/scsi/aic7xxx/aic7xxx_osm.c,v
retrieving revision 1.2.4.2.12.3
diff -a -u -r1.2.4.2.12.3 aic7xxx_osm.c
--- drivers/scsi/aic7xxx/aic7xxx_osm.c 12 Feb 2004 15:33:49 -0000 1.2.4.2.12.3
+++ drivers/scsi/aic7xxx/aic7xxx_osm.c 11 Jan 2005 18:46:43 -0000
@@ -5077,6 +5077,8 @@
}
}
+static void ahc_linux_exit(void);
+
static int __init
ahc_linux_init(void)
{
@@ -5085,8 +5087,7 @@
#else
scsi_register_module(MODULE_SCSI_HA, &aic7xxx_driver_template);
if (aic7xxx_driver_template.present == 0) {
- scsi_unregister_module(MODULE_SCSI_HA,
- &aic7xxx_driver_template);
+ ahc_linux_exit();
return (-ENODEV);
}
next reply other threads:[~2005-01-11 19:24 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-01-11 19:24 Mark Bellon [this message]
2005-01-11 19:48 ` [PATCH] 2.4.28 - AIC driver causes kernel corruption (as a module) James Bottomley
2005-01-11 20:19 ` Mark Bellon
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=41E427D3.2020201@mvista.com \
--to=mbellon@mvista.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox