>From kufel!ankry Fri Sep 15 23:04:36 2000
Return-Path: <kufel!ankry>
Received: from kufel.UUCP (uucp@localhost)
by green.mif.pg.gda.pl (8.9.3/8.9.3) with UUCP id XAA15722
for green.mif.pg.gda.pl!ankry; Fri, 15 Sep 2000 23:04:36 +0200
Received: (from ankry@localhost)
by kufel.dom (8.9.3/8.9.3) id XAA03971
for green!ankry; Fri, 15 Sep 2000 23:08:21 +0200
From: Andrzej Krzysztofowicz <kufel!ankry>
Message-Id: <[EMAIL PROTECTED]>
Subject: 2.2.18pre7 [OOPS] + [PATCH]
To: kufel!green.mif.pg.gda.pl!ankry
Date: Fri, 15 Sep 2000 23:08:21 +0200 (CEST)
X-Mailer: ELM [version 2.5 PL0pre8]
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
[EMAIL PROTECTED], cox
Hi,
I think, I found accidentally a bug in the universal cdrom driver with no
/proc fs support. The following configuration gives me an oops during boot
(key options):
CONFIG_SYSCTL=y
CONFIG_SCSI=y
CONFIG_BLK_DEV_SR=y
CONFIG_SCSI_QLOGIC_FAS=y
# CONFIG_PROC_FS is not set
Oops, and patch that fixes it for build-in cdrom.c follows.
Unfortunately I'm not sure whether it is correct, that MOD_INC_USE_COUNT /
MOD_DEC_USE_COUNT for cdrom module are called only via /proc interface and
can't work when /proc is disabled ...
Well, maybe the module is locked in an alteranative way ? Can anybody confirm
it ?
Unable to handle NULL pointer dereference at virtual address 0000001c
current->tss.cr3 = 00101000, %cr3 = 00101000
*pde = 00000000
Oops: 0002
CPU: 0
EIP: 0010:[<c01a65f6>]
EFLAGS: 00010202
eax: 00000000 ebx: c01df3f8 ecx: 00000000 edx: c7ffc0e0
esi: c01df42c edi: c7ff3018 ebp: 0000000b esp: c7ff9f74
ds: 0018 es: 0018 ss: 0018
Process swapper (pid: 1, process nr: 1, stackpage=c7ff9000)
Stack: c01a1e33 c01c69cc 00000000 c7ff9fac c7ff3040 00000000 c019f930 c7ff3018
c01df3c0 00000000 00000000 00000000 c7ff9fa8 00307273 00000000 c01ea343
00000f00 c01e1fd8 c0106000 c01e733d 00000f00 c01e1fd8 c0106000 00008000
Call Trace: [<c01a1e33>] [<c01c69cc>] [<c019f930>] [<c0106000>] [<c0106000>]
[<c011ef48>] [<c0106093>]
[<c0106527>]
Code: c7 40 1c d0 65 1a c0 a1 cc f4 1d c0 a3 84 b3 20 c0 a1 d0 f4
4533 symbols from /usr/src/kernel/2.2/linux/System.map
EIP: 0xc01a65f6 t cdrom_sysctl_register+0x22/0x6c
trace: 0xc01a1e33 T register_cdrom+0x73/0x1d8
trace: 0xc01c69cc T stext_lock+0xf5d8/0x19f5c
trace: 0xc019f930 t sr_finish+0x128/0x178
trace: 0xc0106000 T get_options+0x0/0x74
trace: 0xc0106000 T get_options+0x0/0x74
trace: 0xc011ef48 T kswapd+0x0/0x9c
trace: 0xc0106093 t init+0x7/0x140
trace: 0xc0106527 T kernel_thread+0x23/0x30
code: 00000000 <oops>:
code: 0: c7 40 1c d0 65 1a c0 movl $0xc01a65d0,0x1c(%eax)
code: 7: a1 cc f4 1d c0 mov 0xc01df4cc,%eax
code: c: a3 84 b3 20 c0 mov %eax,0xc020b384
code: 11: a1 .byte 0xa1
code: 12: d0 (bad)
code: 13: f4 hlt
--- drivers/cdrom/cdrom.c.old Fri Sep 15 22:09:44 2000
+++ drivers/cdrom/cdrom.c Fri Sep 15 22:48:28 2000
@@ -2557,6 +2557,7 @@
static struct ctl_table_header *cdrom_sysctl_header;
+#ifdef CONFIG_PROC_FS
/*
* This is called as the fill_inode function when an inode
* is going into (fill = 1) or out of service (fill = 0).
@@ -2573,6 +2574,7 @@
MOD_DEC_USE_COUNT;
}
}
+#endif /* CONFIG_PROC_FS */
static void cdrom_sysctl_register(void)
{
@@ -2582,7 +2584,9 @@
return;
cdrom_sysctl_header = register_sysctl_table(cdrom_root_table, 1);
+#ifdef CONFIG_PROC_FS
cdrom_root_table->child->de->fill_inode = &cdrom_procfs_modcount;
+#endif /* CONFIG_PROC_FS */
/* set the defaults */
cdrom_sysctl_settings.autoclose = autoclose;
--
=======================================================================
Andrzej M. Krzysztofowicz [EMAIL PROTECTED]
tel. (0-58) 347 14 61
Wydz.Fizyki Technicznej i Matematyki Stosowanej Politechniki Gdanskiej
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/