Hi All,
Today I debug one kernel thread created by kthread_run. And after
several hours run, there is one Oops coming from kthread. Please see
below mesage:
====================
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pc = 00000000
*pde = 00000000
Oops: 0000 [#1]
Pid : 261, Comm: CallbackManager
PC is at 0x0
PC : 00000000 SP : 869bbf8c SR : 40008100 TEA : c016db88 Tainted: P
R0 : 00000000 R1 : 00000000 R2 : 005770c5 R3 : 40008101
R4 : 8b000006 R5 : 00000003 R6 : 07b1ce60 R7 : 00000079
R8 : c01c0800 R9 : 07b1ce60 R10 : 00000003 R11 : 00000000
R12 : 0000004c R13 : 00000000 R14 : 00000079
MACH: 0000025c MACL: 000001c8 GBR : 00000000 PR : c01b514a
Call trace:
[<8442d184>] kthread+0xe4/0x140
[<c01b4f80>] CallbackManager+0x0/0x2c0 [fdma]
[<8440f4c0>] complete+0x0/0xc0
[<8442d080>] kthread_should_stop+0x0/0x20
[<84403004>] kernel_thread_helper+0x4/0x20
Then I do objdump the kernel/kthread.c. Please see attached dumped
contents. And find the offset 0xe4. The assembly line code is:
e4: 08 20 tst r0,r0
Does anybody can explain to me which C code in kthread create this
Oops?Is there any easy way to translate assembly code to C?
best regards
Liu haixiang