每当我在if-else块中放置任何printk语句时,它会导致Linux内核崩溃。
以下是示例代码:
上述代码在我进行编译时成功了。但是当我使用
我想知道这种行为的可能原因以及如何去除这些问题。
以下是示例代码:
if (device-> Some condition) {
s = 0;
e = 0;
printk(KERN_INFO "I am 0 and 0 part \n");
printk(KERN_ALERT "KERN_INFO Successfully registered module \n");
} else {
s = 1;
e = 2;
printk(KERN_INFO "I am in 1 and 1 part \n");
}
上述代码在我进行编译时成功了。但是当我使用
insmod
时,内核停止响应并最终崩溃。相反,如果我注释掉那些 printk
语句,那么我就可以轻松地进行 insmod
。我想知道这种行为的可能原因以及如何去除这些问题。
printk
调用无关。你可能在其他地方存在一些访问违规(UB),并且当你调用printk
时它会显示出来。 - P.Pdevice
不可能是NULL
吗?没有内核堆栈跟踪很难说。 - sheikh_anton