卸载驱动模块时候出错
我执行rmmod卸载驱动模块后,cleanup_module()函数已经执行完了,因为打印出了该函数里面的最后一条打印语句。但是紧接着这条打印语句后打印如下出错内容:
------------[ cut here ]------------
Kernel BUG at c005eab0 [verbose debug info unavailable]
Oops: Exception in kernel mode, sig: 5 [#1]
Modules linked in:
NIP: C005EAB0 LR: C003B180 CTR: 00000000
REGS: c6c0bde0 TRAP: 0700 Not tainted (2.6.20)
MSR: 00021032 <ME,IR,DR> CR: 24000482 XER: 20000000
TASK = c04d1410[829] 'rmmod' THREAD: c6c0a000
GPR00: 00000001 C6C0BE90 C04D1410 C989EAA8 00000001 00000001 C6C0A000 00009032
GPR08: C989EA40 C04B94C0 C0388100 00000000 24000482 100ABACC 07FFD000 00000001
GPR16: FFFFFFFF 00000000 007FFF00 07FF9058 00000000 FE300040 7FDC7F52 00000003
GPR24: 00000002 00000000 7FDC7E68 C0330000 C989E968 C989EAA8 00009032 C989E920
NIP [C005EAB0] kfree+0x50/0xc4
LR [C003B180] free_module+0xfc/0x130
Call Trace:
[C6C0BE90] [00000060] 0x60 (unreliable)
[C6C0BEB0] [C003B180] free_module+0xfc/0x130
[C6C0BED0] [C003C930] sys_delete_module+0x190/0x1e8
[C6C0BF40] [C000F5E0] ret_from_syscall+0x0/0x38
--- Exception: c01 at 0xff27c54
LR = 0x10033b5c
Instruction dump:
7c000124 3d60c037 3d3d4000 814bf438 5529c9f4 7c09502e 7d295214 700b4000
4082005c 80090000 68000080 5400cffe <0f000000> 80690018 83e30000 813f0000
Trace/breakpoint trap
然后回到了命令行,我查了好久还没找出出错原因,请高人指点。。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
恭喜你,有机会分析panic了
你好好分析一下你卸载模块的函数,可以把它贴上来分析一下
卸载其他的模块会有这个问题不?
其他模块应该不会,我估计是他写在模块的时候,操作了空指针或者野指针
版主果然老道
Kernel panic很多时候都是指针的问题。LZ需要仔细检查一下是不是在exit的时候引用了已经释放的指针
我把驱动卸载函数里面代码全部注释掉也会有上述打印输出,所以应该不是代码里面指针操作之类的问题,我这个驱动完全按照2.6的pci设备驱动模型编写的,2.6.20内核,编译时没有任何warnings, errors。。。
二楼的真能说笑啊
这种Kernel BUG被我碰到了真郁闷啊,估计是软件结构性问题,查了好久了还没有找到突破口。。。
能分析一个panic并解决了,那是很大的幸事阿。你把模块卸载的函数贴出来,大家帮你分析