我只是编写一个Linux内核模块并收到一条警告消息,表明我的内核已被污染了:
[ 1194.552013] ------------[ cut here ]------------
[ 1194.552639] WARNING: CPU: 0 PID: 176 at /build/linux-mcJ30I/linux-3.16.7-ckt20/block/blk.h:231 generic_make_request_checks+0x46a/0x480()
[ 1194.552639] Modules linked in: <my kernel muldule>(O) <various other Standard kernel modules>
[ 1194.552639] CPU: 0 PID: 176 Comm: systemd-udevd Tainted: G O 3.16.0-4-586 #1 Debian 3.16.7-ckt20-1+deb8u1
[ 1194.552639] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
[ 1194.552639] ebeb3b70 ebeb3b70 c103bf71 c14f2d68 00000000 000000b0 c1520644 000000e7
[ 1194.552639] c11ddd1a 000000e7 c11ddd1a ec0d4800 edcb5c00 ffffffff ebeb3b80 c103c032
[ 1194.552639] 00000009 00000000 ebeb3bf8 c11ddd1a 06010006 000001a7 00000000 00000000
[ 1194.552639] Call Trace:
[ 1194.552639] [<c103bf71>] ? warn_slowpath_common+0x81/0xa0
[ 1194.552639] [<c11ddd1a>] ? generic_make_request_checks+0x46a/0x480
[ 1194.552639] [<c11ddd1a>] ? generic_make_request_checks+0x46a/0x480
...
消息刚出现一次,我的模块正常工作,我没有得到任何Oops消息或内核恐慌或类似。
我阅读了几个问题,答案和教程(here,here或here)但基本上我发现的是社区不支持当前运行的内核(不再)并且不能由社区调试。对我来说,这是显而易见的,因为我的内核模块已安装且它们没有源代码。
所以对我而言,似乎没有任何危险的警告信息,这是正确的吗?我已经尝试找几个小时的错误,但我找不到。消息刚刚显示,因为我正在使用我的内核模块?
编辑:我不知道它是否重要,但我正在运行Linux内核3.16.0-4-586