Oops when unregistering kprobes

William Cohen wcohen@redhat.com
Fri Apr 15 21:49:00 GMT 2005


I noticed when attempting to run my multiprobe test (kprobe-multi.ko) on 
the stock 2.6.12-rc1-mm2 kernel that only allows a single probe at an 
address. I know that is is going to fail. However, I got an oops from 
attempting to remove a non existant probe. Only one of the two probes 
were inserted, but the code tried to remove both, resulting in the oops 
for the second kprobe removal. Could we make this more robust so 
kprobe_unregister can't oops on a bogus kprobe removal?

-Will

Apr 15 17:24:26 trek kernel: Unable to handle kernel NULL pointer 
dereference a\t virtual address 00000000
Apr 15 17:24:26 trek kernel:  printing eip:
Apr 15 17:24:26 trek kernel: c014a104
Apr 15 17:24:26 trek kernel: *pde = 08313001
Apr 15 17:24:26 trek kernel: Oops: 0002 [#1]
Apr 15 17:24:26 trek kernel: SMP
Apr 15 17:24:26 trek kernel: Modules linked in: kprobe_multi md5 ipv6 
parport_p\c lp parport autofs4 sunrpc ipt_REJECT ipt_state ip_conntrack 
iptable_filter ip\_tables dm_mod video hotkey button battery ac uhci_hcd 
hw_random i2c_i801 i2c_c\ore emu10k1_gp snd_cs46xx gameport snd_emu10k1 
snd_rawmidi snd_seq_device snd_a\c97_codec snd_pcm_oss snd_mixer_oss 
snd_pcm snd_timer snd_page_alloc snd_util_m\em snd_hwdep snd soundcore 
3c59x mii floppy ext3 jbd
Apr 15 17:24:26 trek kernel: CPU:    1
Apr 15 17:24:26 trek kernel: EIP:    0060:[<c014a104>]    Not tainted VLI
Apr 15 17:24:26 trek kernel: EFLAGS: 00010046   (2.6.12-rc2-mm2)
Apr 15 17:24:26 trek kernel: EIP is at unregister_kprobe+0x24/0x50
Apr 15 17:24:26 trek kernel: eax: 00000000   ebx: d0adebf0   ecx: 
00000282   ed\x: 00000000
Apr 15 17:24:26 trek kernel: esi: d0adebf0   edi: 00000003   ebp: 
00000003   es\p: c7e3bf84
Apr 15 17:24:26 trek kernel: ds: 007b   es: 007b   ss: 0068
Apr 15 17:24:26 trek kernel: Process insmod (pid: 2885, 
threadinfo=c7e3b000 tas\k=cfb77560)
Apr 15 17:24:26 trek kernel: Stack: 00000001 d0ade36c d0ade414 00000003 
0000000\1 00000000 d0adec80 00000000
Apr 15 17:24:26 trek kernel:        00000000 c7e3b000 c0142b85 0804a018 
0000000\0 0804a018 00000000 c010429d
Apr 15 17:24:26 trek kernel:        0804a018 00018480 0804a008 00000000 
0000000\0 bfaf3998 ffffffda 0000007b
Apr 15 17:24:26 trek kernel: Call Trace:
Apr 15 17:24:26 trek kernel:  [<d0ade36c>] init_module+0x21c/0x270 
[kprobe_mult\i]
Apr 15 17:24:26 trek kernel:  [<c0142b85>] sys_init_module+0xd5/0x210
Apr 15 17:24:26 trek kernel:  [<c010429d>] syscall_call+0x7/0xb
Apr 15 17:24:26 trek kernel: Code: 8d b4 26 00 00 00 00 53 89 c3 e8 48 
07 fd ff\ b8 60 6a 3a c0 e8 3e 33 20 00 8b 53 08 89 c1 0f b6 43 1c 88 02 
8b 03 8b 53 04 \85 c0 <89> 02 74 03 89 50 04 c7 03 00 01 10 00 89 ca b8 
60 6a 3a c0 c7



More information about the Systemtap mailing list