I suspect that it is the CD-ROM driver that got reaped by kerneld.
(A "lsmod" after the Oops might tell if I'm correct...)
It seems that some modules, CD-ROM drivers in particular, are lying
about whether they are in use or not.
The problem is that they are not doing MOD_INC_USE_COUNT until the _end_
of their *_open functions, while they in fact _are_ using kernel resources
long before that...
If they sleep in some way _before_ incrementing the usage counter, there
will certainly be problems!
Try this patch to linux/drivers/cdrom/gscd.c (I think you are using that one):
--- linux-1.3.100/drivers/cdrom/gscd.c Sun May 12 12:43:49 1996
+++ linux/drivers/cdrom/gscd.c Sun May 12 12:48:09 1996
@@ -370,11 +370,14 @@
if (gscdPresent == 0)
return -ENXIO; /* no hardware */
+ MOD_INC_USE_COUNT;
+
get_status ();
st = disk_state & (ST_NO_DISK | ST_DOOR_OPEN);
if ( st )
{
printk ( "GSCD: no disk or door open\n" );
+ MOD_DEC_USE_COUNT;
return -ENXIO;
}
@@ -382,8 +385,6 @@
return -EIO;
*/
- MOD_INC_USE_COUNT;
-
return 0;
}
Bjorn