簡體   English   中英

Linux輸入驅動程序中的NULL指針取消引用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM