When running 'modprobe ipmi_si' on a machine with a Supermicro H8DMR-82
mobo that doesn't have am IPMI card, running a RHEL4 U4 x86_64
2.6.9-42.0.3.ELsmp kernel, I get the following Oops:
ipmi_si: Found SMBIOS-specified state machine at memory address 0x0,
slave address 0x0
Could not set up I/O space
Unable to handle kernel NULL pointer dereference at 0000000000000000 RIP:
[<0000000000000000>]
PML4 11ab7a067 PGD 11a663067 PMD 0
Oops: 0010 [1] SMP
CPU 0
Modules linked in: ipmi_si ipmi_msghandler nfsd exportfs md5 ipv6
parport_pc lpd
Pid: 4129, comm: modprobe Not tainted 2.6.9-42.0.3.ELsmp
RIP: 0010:[<0000000000000000>] [<0000000000000000>]
RSP: 0000:000001011a7b5e70 EFLAGS: 00010202
RAX: 00000100dfe6a800 RBX: 00000000ffffffed RCX: 0000010000012000
RDX: 0000000000000202 RSI: 000001011c093030 RDI: 00000100dfe6a800
RBP: 0000000000000000 R08: 000001011a7b4000 R09: 0000000000000008
R10: 0000000000000000 R11: 0000000000000002 R12: ffffffffa0226d20
R13: 0000000000000000 R14: 0000000000000000 R15: ffffffffa0226ba0
FS: 0000002a958a0b00(0000) GS:ffffffff804e5180(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 0000000000000000 CR3: 0000000000101000 CR4: 00000000000006e0
Process modprobe (pid: 4129, threadinfo 000001011a7b4000, task
000001011c093030)
Stack: ffffffffa021f205 000001011a7b5f08 0000000000000002 000000000000000f
00000100dfe6a800 0000000000000000 0000000000000c58 00000000000fad30
000001011a7b5f08 ffffffffa0226d20
Call Trace:<ffffffffa021f205>{:ipmi_si:init_one_smi+3801}
<ffffffffa0228363>{:i
<ffffffff8014fd19>{sys_init_module+278}
<ffffffff8011026a>{system_call+1
Code: Bad RIP value.
RIP [<0000000000000000>] RSP <000001011a7b5e70>
CR2: 0000000000000000
<0>Kernel panic - not syncing: Oops
Having a look at the code, it fails in init_one_smi() at:
new_smi->io_cleanup(new_smi);
This is because new_smi->io_cleanup is not set because port_setup() and
mem_setup() can return with an error before info->io_cleanup is set ...
The patch below, I believe, fixes this - well it works for me in this case:
--- ./drivers/char/ipmi/ipmi_si_intf.c.dist 2006-10-23
14:09:55.603578212 +0100
+++ ./drivers/char/ipmi/ipmi_si_intf.c 2006-10-24 15:18:33.939582459 +0100
@@ -1216,11 +1216,11 @@ static int port_setup(struct smi_info *i
unsigned int *addr = info->io.info;
int mapsize;
+ info->io_cleanup = port_cleanup;
+
if (!addr || (!*addr))
return -ENODEV;
- info->io_cleanup = port_cleanup;
-
/* Figure out the actual inb/inw/inl/etc routine to use based
upon the register size. */
switch (info->io.regsize) {
@@ -1365,11 +1365,11 @@ static int mem_setup(struct smi_info *in
unsigned long *addr = info->io.info;
int mapsize;
+ info->io_cleanup = mem_cleanup;
+
if (!addr || (!*addr))
return -ENODEV;
- info->io_cleanup = mem_cleanup;
-
/* Figure out the actual readb/readw/readl/etc routine to use based
upon the register size. */
switch (info->io.regsize) {
I have a Redhat bugzilla report at:
<https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=211920>
which has the same info.
James Pearson
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Openipmi-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openipmi-developer