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 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.