Linux内核编程:“无法处理内核空指针取消引用”

时间:2008-12-04 17:25:09

标签: linux kernel kernel-module

我正在写一个Linux模块(内核编程),我得到了:

“无法处理内核空指针取消引用”

这是什么意思?

3 个答案:

答案 0 :(得分:5)

听起来像是一个当前具有NULL值(零)的指针被取消引用。在解除引用之前为指针分配地址。

e.g。

int x = 5;
int * x_ptr = NULL;

x_ptr = &x; // this line may be missing in your code

*x_ptr += 5; //can't dereference x_ptr here if x_ptr is still NULL

答案 1 :(得分:4)

内核试图从地址0读取,你的内核显然特别对待它(好东西!)。由于内核无法像我们从用户模式应用程序(那些会收到Segmentation Fault)那样直接杀死自己,因此这个错误是致命的。它可能会panic'ed并向您显示该消息。


http://en.wikipedia.org/wiki/Null_pointer#The_null_pointer

答案 2 :(得分:4)

这意味着内核试图使用空指针。这会生成一个无法在内核中处理的页面错误 - 如果它正在运行用户任务(但在内核空间中),它通常会产生一个“不正确”的“糟糕”,它会(当前)杀死当前任务并可能泄漏内核资源。如果它在某些其他情况下,例如一个中断,它通常会引起内核恐慌。