Modprobe as script breaks initramfs kernel?

From: Deepak Saxena
Date: Wed Feb 21 2007 - 19:42:46 EST



We attempted an experiment in cleaning up some modprobe messages during
initramfs bootup when the modules directory is missing by moving modprobe
to modprobe-bin and replacing modprobe with the following simple shell script:

#!/bin/sh
# Clean up bootup when modules are not present

if [ -e "/lib/modules/'uname -r'/modules.dep" ] ; then
/sbin/modprobe-bin $*
else
exit 0
fi

Running this on any architecture causes a non fatal kernel BUG message
out of the do_pipe() code path everytime modprobe is called.

BUG: unable to handle kernel NULL pointer dereference at virtual address 00000014
c016a5e6
*pde = 00000000
Oops: 0000 [#1]
CPU: 0
EIP: 0060:[<c016a5e6>] Not tainted VLI
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010286 (2.6.18_pro500-pc_target-x86_586 #2)
eax: 00000000 ebx: bf8f9ae8 ecx: 00000000 edx: c16a00f0
esi: c16f0c80 edi: 00000011 ebp: c16f0bc0 esp: c16e9f40
ds: 007b es: 007b ss: 0068 preempt: 00000001
Stack: 00000000 dff64dc0 c13ff580 00000000 ffffffe9 dfe84a40 00000002 c16e8000
c169f41c 0808d581 c166b900 c010f5bd c166b934 c169f41c 0808d581 00000000
00000004 c16e9fbc bf8f9ae8 c16e9fa8 00000011 c16e8000 c0107737 c16e9fa8
Call Trace:
[<c010f5bd>] [<c0107737>] [<c01030d7>] <0>Code: c6 c7 44 24 10 e9 ff ff ff 0f 84 1b 02 00 00 e8 91 2e ff ff 85 c0 89 c5 c7 44 24 10 e9 ff ff ff 0f 84 34 02 00 00 a1 d8 75 53 c0 <8b> 40 14 89 04 24 e8 8f ec 00 00 85 c0 89 c3 0f 84 0a 02 00 00
EIP: [<c016a5e6>] SS:ESP 0068:c16e9f40
Warning (Oops_read): Code line not seen, dumping what data is available


>>EIP; c016a5e6 <do_pipe+46/2c0> <=====

>>ebx; bf8f9ae8 <phys_startup_32+bf7f9ae8/c0000000>
>>edx; c16a00f0 <pg0+f220f0/3f880400>
>>esi; c16f0c80 <pg0+f72c80/3f880400>
>>ebp; c16f0bc0 <pg0+f72bc0/3f880400>
>>esp; c16e9f40 <pg0+f6bf40/3f880400>

Trace; c010f5bd <do_page_fault+15d/75a>
Trace; c0107737 <sys_pipe+17/60>
Trace; c01030d7 <syscall_call+7/b>

>>EIP; c016a5e6 <do_pipe+46/2c0> <=====

I've done a quick skim of the code and don't quite see the issue there.
Can the kernel not handle modprobe as a script that then executes another
process this early in the boot sequence?

Tnx,
~Deepak

ps: Yes, I know this is "fix" to error messages is ugly. :)

--
Deepak Saxena - dsaxena@xxxxxxxxxxx - http://www.plexity.net

in the end, they will not say, "those were dark times," they will ask
"why were their poets silent?" - Bertold Brecht
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/