[英]Linux kernel NULL-pointer dereference in memset from kzalloc
[英]NULL pointer dereference in Linux input driver
//Init Module
...
set_bit(EV_ABS, joystick_dev->evbit);
set_bit(ABS_X, joystick_dev->absbit);
set_bit(ABS_Y, joystick_dev->absbit);
set_bit(ABS_Z, joystick_dev->absbit);
...
//Kernel Thread
...
int g[3];
g[0] = -1;
g[1] = 0;
g[2] = 0;
input_report_abs(joystick_dev, ABS_X, g[0]);
input_report_abs(joystick_dev, ABS_Y, g[1]);
input_report_abs(joystick_dev, ABS_Z, g[2]);
input_sync(joystick_dev);
...
執行突然停止在
input_report_abs(joystick_dev, ABS_Y, g[1]);
執行后
input_report_abs(joystick_dev, ABS_X, g[0]);
並引發以下異常-
BUG: unable to handle kernel NULL pointer dereference...
可能是什么錯誤? 謝謝。
我認為您忘記為g[0]
賦值了。
// Kernel Thread ... int g[3];
g[1] = -1; g[2] = 0; g[3] = 0;
int g[3]
表示g[0],g[1],g[2]
對嗎? 修正希望得到您想要的東西。
問題是在Linux中,注冊ABS事件時,我們需要設置它們的參數,而相對事件和鍵盤事件則不是這樣。 所以我們需要添加它。
input_set_abs_params(joystick_dev, ABS_X, 0, 255, 4, 8);
input_set_abs_params(joystick_dev, ABS_Y, 0, 255, 4, 8);
input_set_abs_params(joystick_dev, ABS_Z, 0, 255, 4, 8);
現在它將正常工作。 在此處記錄:
https://www.kernel.org/doc/Documentation/input/input-programming.txt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.