linux - 可加载内核 mdoule 的 insmod 导致信号 4 异常

标签 linux linux-kernel linux-device-driver

我当时使用的是 linux 3.14,我们加载了许多内核模块并且工作正常。 在之前的可加载模块加载失败之后,我应用了一些修复一些漏洞的官方补丁到我现有的内核。

我收到内核异常并转到 KGDB,控制台上没有任何错误消息。

日志:

bash#/sbin/insmod -f [模块文件]

[1028.720605] KGDB:WAITING远程调试器

堆栈转储

[  158.670810]  [<ffffffffb8c6e7ed>] dump_stack+0x45/0x56
[  158.732379]  [<ffffffffb88ae189>] kgdb_handle_exception+0x3f/0x4d
[  158.805404]  [<ffffffffb882c164>] __kgdb_notify+0xda/0xeb
[  158.870089]  [<ffffffffb882c198>] kgdb_notify+0x23/0x44
[  158.932695]  [<ffffffffb8c76073>] notifier_call_chain+0x39/0x5c
[  159.003632]  [<ffffffffb8c760b8>] atomic_notifier_call_chain+0x13/0x15
[  159.081862]  [<ffffffffb8c760f3>] notify_die+0x39/0x40
[  159.143426]  [<ffffffffb8802c14>] do_invalid_op+0x6e/0xdb
[  159.208114]  [<ffffffffb8808254>] ? apply_alternatives+0x7d/0x455
[  159.281136]  [<ffffffffb88ed937>] ? zone_statistics+0x71/0x78
[  159.349991]  [<ffffffffb8a25f97>] ? trace_hardirqs_off_thunk+0x3a/0x6c
[  159.428221]  [<ffffffffb8c73130>] ? irq_return+0xa/0xa
[  159.489781]  [<ffffffffb8c7af65>] invalid_op+0x15/0x20
[  159.551345]  [<ffffffffb8808254>] ? apply_alternatives+0x7d/0x455
[  159.624371]  [<ffffffffb889340d>] ? each_symbol_section.part.10+0x17e/0x1ba
[  159.707811]  [<ffffffffb8892243>] ? cmp_name+0xd/0xf
[  159.767290]  [<ffffffffb8a2941a>] ? bsearch+0x4b/0x7b
[  159.827812]  [<ffffffffb8892236>] ? unregister_module_notifier+0x15/0x15
[  159.908124]  [<ffffffffb889239b>] ? find_symbol_in_section+0x36/0xdc
[  159.984270]  [<ffffffffb8892365>] ? mod_find_symname+0x60/0x60
[  160.054167]  [<ffffffffb889346a>] ? each_symbol_section+0x21/0x44
[  160.127188]  [<ffffffffb8a263fc>] ? sort+0x113/0x1aa
[  160.186669]  [<ffffffffb882b860>] module_finalize+0xb8/0xf9
[  160.253441]  [<ffffffffb8894e55>] load_module+0x1335/0x1ca2
[  160.320212]  [<ffffffffb8892c6a>] ? copy_module_from_fd+0x9c/0xfc
[  160.393237]  [<ffffffffb88b5269>] ? rb_commit+0x7e/0x85
[  160.455847]  [<ffffffffb88958b8>] SyS_finit_module+0x59/0x66
[  160.523664]  [<ffffffffb88958b8>] ? SyS_finit_module+0x59/0x66
[  160.593562]  [<ffffffffb8c7b6c8>] ia32_do_call+0x1f/0x1f

提前致谢

最佳答案

问题是因为在某些数据结构中添加了新字段,而那些 .h 文件未用于重建旧的 klm。

用新的 .h 文件重建 KLM 解决了这个问题。

关于linux - 可加载内核 mdoule 的 insmod 导致信号 4 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52261263/

相关文章:

linux - 剪切命令ubuntu

linux - 将 Sublime Text 2 添加到 Ubuntu 12.04 中的右键单击上下文菜单

linux - Bash:如果管道 IO 空闲则关闭

从用户程序控制 TCP header 字段

linux - 内核 Oops 从用户空间访问 BAR 寄存器

javascript - 自定义 firefox console.log(针对我自己的原型(prototype))

linux - 什么是 ITER_IOVEC、ITER_KVEC 和 ITER_BVEC?

linux - usb_serial_register 函数的头文件?

c - 让我知道以下有关 USB 调制解调器插件和插件通知处理程序 API 或 Linux 中的系统调用的信息

memory-management - 用于多个进程的内核驱动程序中的内存池