我正在编写Linux模块并获得:
Unable to handle kernel NULL pointer dereference
这是什么意思?
类似于当前具有NULL值(零)的指针的声音正在被取消引用。在取消对指针的引用之前为其分配一个地址。
例如
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
内核尝试从地址0
中读取,您的内核显然特别对待(好东西!)。由于内核没有办法像我们从用户模式应用程序中知道的那样杀死自己(那些应用程序将收到Segmentation Fault),因此该错误是致命的。它可能会显示panic'ed并向您显示该消息。
这意味着内核试图引用空指针。这会产生无法在内核中处理的页面错误-如果它正在运行用户任务(但在内核空间中),通常会发出“糟糕”的信号((干净地)杀死当前任务并可能泄漏内核资源)。如果是在其他情况下,例如中断,通常会导致内核崩溃。