kernel tried to execute NX-protected page - exploit attempt? (uid: 0)
写内核模块时,遇到这个问题。
这个问题报告的是,CPU执行了一个没有执行权限的代码区域。
后来,我检查了代码发现在某一个函数前面有 __init 前缀,这个前缀会导致代码第一次被执行后就被释放掉了,去掉这个前缀问题仍然存在,后来,检查了一下二进制文件,readelf -S xxx.o 和 readelf -a xxx.o 发现,函数仍然被放置在.init段中,所以继续查,发现在头文件中有函数声明,在函数声明中有__init描述。