Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Linux内核编程:;无法处理内核空指针取消引用;_C_Linux_Kernel_Kernel Module - Fatal编程技术网

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

C Linux内核编程:;无法处理内核空指针取消引用;,c,linux,kernel,kernel-module,C,Linux,Kernel,Kernel Module,我正在编写Linux模块并获得: Unable to handle kernel NULL pointer dereference 这是什么意思?听起来像是一个当前具有空值(零)的指针正在被取消引用。在取消引用指针之前,为指针分配一个地址 e、 g 内核试图从地址0读取数据,而您的内核显然对地址进行了特殊处理(这是件好事!)。由于内核无法像我们从用户模式应用程序(这些应用程序可能会收到错误消息)中知道的那样杀死自己,所以这个错误是致命的。它可能已经向您显示了该消息 这意味着内核试图遵从空指针

我正在编写Linux模块并获得:

Unable to handle kernel NULL pointer dereference

这是什么意思?

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

e、 g


内核试图从地址
0
读取数据,而您的内核显然对地址进行了特殊处理(这是件好事!)。由于内核无法像我们从用户模式应用程序(这些应用程序可能会收到错误消息)中知道的那样杀死自己,所以这个错误是致命的。它可能已经向您显示了该消息



这意味着内核试图遵从空指针。这会产生一个无法在内核中处理的页面错误-如果它正在运行一个用户任务(但在内核空间),它通常会发出一个“Oops”,这会(不明确地)终止当前任务,并可能泄漏内核资源。如果是在其他上下文中,例如中断,通常会导致内核死机。

您的分析是正确的,但代码中的注释是错误的*x_ptr+=5是可以的,因为x_ptr现在的地址是x(堆栈地址),因此可以取消引用。
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