public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [2.4 patch] cmpci oops on rmmod + fix
@ 2004-07-17 20:07 Adrian Bunk
  2004-07-20 14:52 ` Marcelo Tosatti
  0 siblings, 1 reply; 2+ messages in thread
From: Adrian Bunk @ 2004-07-17 20:07 UTC (permalink / raw)
  To: Marcelo Tosatti; +Cc: Krzysztof Rusocki, cltien, linux-kernel

Below is a patch originally sent against 2.6 by
Krzysztof Rusocki <kszysiu@iceberg.elsat.net.pl> (and already included 
in 2.6.8-rc1).

His explanation of the patch was:

<--  snip  -->

The cmpci driver included in Linux 2.6.7 causes an oops on rmmod,
I believe cm_remove should be marked __devexit rather than __devinit.

<--  snip  -->


This is an obvious bug, and below is my backport of his fix to 2.4 .
While I was editing struct cm_driver, I've also converted it to C99 
initializers (as already done in 2.6).


Signed-off-by: Adrian Bunk <bunk@fs.tum.de>

--- linux-2.4.27-rc3-full/drivers/sound/cmpci.c.old	2004-07-17 21:56:28.000000000 +0200
+++ linux-2.4.27-rc3-full/drivers/sound/cmpci.c	2004-07-17 21:57:22.000000000 +0200
@@ -3595,7 +3595,7 @@
 MODULE_DESCRIPTION("CM8x38 Audio Driver");
 MODULE_LICENSE("GPL");
 
-static void __devinit cm_remove(struct pci_dev *dev)
+static void __devexit cm_remove(struct pci_dev *dev)
 {
 	struct cm_state *s = pci_get_drvdata(dev);
 
@@ -3643,10 +3643,10 @@
 MODULE_DEVICE_TABLE(pci, id_table);
 
 static struct pci_driver cm_driver = {
-       name: "cmpci",
-       id_table: id_table,
-       probe: cm_probe,
-       remove: cm_remove
+	.name		= "cmpci",
+	.id_table	= id_table,
+	.probe		= cm_probe,
+	.remove		= __devexit_p(cm_remove)
 };
  
 static int __init init_cmpci(void)


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2004-07-20 16:05 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-07-17 20:07 [2.4 patch] cmpci oops on rmmod + fix Adrian Bunk
2004-07-20 14:52 ` Marcelo Tosatti

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox