1.引用空指针:
今天写了个内核模块,在写相应的应用层函数调试时,出现下面的错误,经定位出现在open函数中。open函数只是对file的私有指针进行赋值。最后经查找发现,字符设备申请的设备号与系统存在的设备号相冲突,经改变设备号,此问题被解决。
[root@EmbedSky sky]# ./dev_test
hello worldUnable to handle kernel NULL pointer dereference at virtual address 00000024
pgd = c3a70000
[00000024] *pgd=3387c031, *pte=00000000, *ppte=00000000
Internal error: Oops: 0 [#11]
Modules linked in: list_test(P) [last unloaded: list_test]
CPU: 0 Tainted: P D (2.6.30.4 #11)
PC is at 0x24
LR is at chrdev_open+0x13c/0x158
pc : [<00000024>] lr : [<c0094e50>] psr: 20000013
sp : c3af3e88 ip : 22222222 fp : 00000026
r10: c3608b34 r9 : c3af2000 r8 : c382cea0
r7 : c3aef268 r6 : bf01bb60 r5 : 00000000 r4 : 00000000
r3 : 00000026 r2 : a0000013 r1 : c382cea0 r0 : c3aef268
Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
Control: c000717f Table: 33a70000 DAC: 00000015
Process dev_test (pid: 1073, stack limit = 0xc3af2268)