Kernel oops when using kernel 2.6.16 on I2O system

Problem:

When using the 2.6.16 i2o driver, the kernel will experience an oops similar to the following:

Jul 24 23:43:51 trot kernel: Unable to handle kernel NULL pointer
dereference at virtual address 00000004
Jul 24 23:43:51 trot kernel:  printing eip:
Jul 24 23:43:51 trot kernel: c015fe74
Jul 24 23:43:51 trot kernel: *pde = 36ac3001
Jul 24 23:43:51 trot kernel: Oops: 0000 [#1]
Jul 24 23:43:51 trot kernel: SMP
Jul 24 23:43:51 trot kernel: last sysfs file: /class/vc/vcsa6/dev
Jul 24 23:43:51 trot kernel: Modules linked in: i2o_config ipv6 autofs4
ipt_REJECT xt_state ip_conntrack nfnetlink xt_tcpudp iptable_filter
ip_tables x
_tables dm_mod video button battery ac uhci_hcd e7xxx_edac edac_mc
hw_random i2c_i801 i2c_core e1000 bonding floppy ext3 jbd i2o_block
i2o_core sd_mod
scsi_mod
Jul 24 23:43:51 trot kernel: CPU:    0
Jul 24 23:43:51 trot kernel: EIP:    0060:[]    Not tainted VLI
Jul 24 23:43:51 trot kernel: EFLAGS: 00010046
(2.6.16-1.2096_FC3asl.6smp #1)
Jul 24 23:43:51 trot kernel: EIP is at free_block+0x51/0xd4
Jul 24 23:43:51 trot kernel: eax: 00000000   ebx: f1880000   ecx:
f1880080   edx: f7fe2248
Jul 24 23:43:51 trot kernel: esi: f7fe2240   edi: c2ffe3c0   ebp:
00000009   esp: f7fefef8
Jul 24 23:43:51 trot kernel: ds: 007b   es: 007b   ss: 0068
Jul 24 23:43:52 trot kernel: Process events/0 (pid: 8,
threadinfo=f7fef000 task=f7e005d0)
Jul 24 23:43:52 trot kernel: Stack: <0>0000000b f7f1e6e0 f7f1e6e0
0000000b f7f1e6c0 00000000 c0160620 00000000
Jul 24 23:43:52 trot kernel:        c2ffe3c0 c2e23260 f7fdfcd0 f7fe2240
c2ffe3c0 c01606ba 00000000 00000001
Jul 24 23:43:52 trot kernel:        c2ffe494 00000006 c2e23260 c2e23264
f7f00140 00000297 c0130ecb 00000000
Jul 24 23:43:52 trot kernel: Call Trace:
Jul 24 23:43:52 trot kernel:  [] drain_array_locked+0x62/0x82
     [] cache_reap+0x7a/0x196
Jul 24 23:43:52 trot kernel:  [] run_workqueue+0x7f/0xb4
[] cache_reap+0x0/0x196
Jul 24 23:43:52 trot kernel:  [] worker_thread+0xef/0x121
[] default_wake_function+0x0/0xc
Jul 24 23:43:52 trot kernel:  [] default_wake_function+0x0/0xc
     [] worker_thread+0x0/0x121
Jul 24 23:43:52 trot kernel:  [] kthread+0x73/0x9b
[] kthread+0x0/0x9b
Jul 24 23:43:52 trot kernel:  [] kernel_thread_helper+0x5/0xb
    <0>Code: c1 e8 0c 6b c0 28 03 05 10 03 49 c0 8b 58 24 8b 44 24 1c 8b
53 04 8
b b4 87 90 00 00 00 39 1a 74 08 0f 0b a7 00 06 52 31 c0 8b 03 <39> 58 04
74 08 0f 0b a8 00 06 52 31 c0 89 50 04 89 02 c7 43 04

Details:

There is a memory corruption bug in the 2.6.16 i2o driver

Solution:

The kernel should be upgraded to 2.6.17 or higher