- 论坛徽章:
- 0
|
是2.6.10内核树
书上带的例子没动
编译时
- [root@localhost sculld]# make
- make -C /lib/modules/2.6.10/build M=/root/ldd3/sculld LDDINC=/root/ldd3/sculld modules
- make[1]: Entering directory `/root/linux-2.6.10'
- Building modules, stage 2.
- MODPOST
- *** Warning: "register_ldd_driver" [/root/ldd3/sculld/sculld.ko] undefined!
- *** Warning: "unregister_ldd_device" [/root/ldd3/sculld/sculld.ko] undefined!
- *** Warning: "register_ldd_device" [/root/ldd3/sculld/sculld.ko] undefined!
- *** Warning: "unregister_ldd_driver" [/root/ldd3/sculld/sculld.ko] undefined!
- make[1]: Leaving directory `/root/linux-2.6.10'
复制代码 找到那几个undefined函数后,编译不报warning了,但是插入又报- Badness in kref_get at lib/kref.c:32
- [<c01b7714>] kref_get+0x44/0x50
- [<c01b6bea>] kobject_get+0x1a/0x30
- [<c01edcfd>] get_bus+0x1d/0x40
- [<c01edb04>] bus_add_driver+0x24/0xd0
- [<c01ee19f>] driver_register+0x2f/0x40
- [<c01ee170>] driver_register+0x0/0x40
- [<d085afd1>] register_ldd_driver+0x21/0x70 [sculld]
- [<d085aa8e>] sculld_init+0x4e/0x180 [sculld]
- [<c012a3fb>] sys_init_module+0x1ab/0x1d0
- [<c01025c9>] sysenter_past_esp+0x52/0x75
- Badness in kref_get at lib/kref.c:32
- [<c01b7714>] kref_get+0x44/0x50
- [<c01b6bea>] kobject_get+0x1a/0x30
- [<c01b6871>] kobject_init+0x31/0x50
- [<c01b69fb>] kobject_register+0x1b/0x60
- [<c01edb37>] bus_add_driver+0x57/0xd0
- [<c01ee19f>] driver_register+0x2f/0x40
- [<c01ee170>] driver_register+0x0/0x40
- [<d085afd1>] register_ldd_driver+0x21/0x70 [sculld]
- [<d085aa8e>] sculld_init+0x4e/0x180 [sculld]
- [<c012a3fb>] sys_init_module+0x1ab/0x1d0
- [<c01025c9>] sysenter_past_esp+0x52/0x75
- Unable to handle kernel NULL pointer dereference at virtual address 00000048
- printing eip:
- c01b694a
- *pde = 00000000
- Oops: 0002 [#1]
- Modules linked in: sculld
- CPU: 0
- EIP: 0060:[<c01b694a>] Not tainted VLI
- EFLAGS: 00010282 (2.6.10)
- EIP is at kobject_add+0x4a/0xe0
- eax: 00000048 ebx: d085cd00 ecx: 00000000 edx: ffff0001
- esi: d085cd00 edi: 00000000 ebp: 00000000 esp: c6fdbf00
- ds: 007b es: 007b ss: 0068
- Process insmod (pid: 3895, threadinfo=c6fda000 task=c803e500)
- Stack: 00000000 d085cd00 d085cd00 d085cd00 d085cce8 c01b6a03 d085cd00 d085cd00
- d085cf00 d085cd00 d085cf00 c01edb37 d085cd00 c02d9228 d085b10a d085cce0
- d085cce8 bffffb00 c6fda000 c01ee19f d085cce8 ffffff00 c01ee170 00000060
- Call Trace:
- [<c01b6a03>] kobject_register+0x23/0x60
- [<c01edb37>] bus_add_driver+0x57/0xd0
- [<c01ee19f>] driver_register+0x2f/0x40
- [<c01ee170>] driver_register+0x0/0x40
- [<d085afd1>] register_ldd_driver+0x21/0x70 [sculld]
- [<d085aa8e>] sculld_init+0x4e/0x180 [sculld]
- [<c012a3fb>] sys_init_module+0x1ab/0x1d0
- [<c01025c9>] sysenter_past_esp+0x52/0x75
- Code: 00 00 8b 13 85 d2 75 05 8d 43 04 89 03 8b 43 24 89 04 24 e8 99 02 00 00
- 89 c7 8b 43 28 85 c0 74 48 8b 08 ba 01 00 ff ff 8d 41 48 <0f> c1 10 85 d2 0f
- 85 20 06 00 00 85 ff 74 6f 8b 43 28 8d
- 53 1c
复制代码 insmod报这个错
sculld应该怎么运行? |
|