0

使用内核模块时出现无法处理内核空指针取消引用错误。这是我想要做的

inputfile = filp_open(kernel_args->infile, O_RDONLY, 0); //Open a file

if(inputfile == NULL) //Check if the file exists
{
    printk("\nInput file not found on drive\n");
    error = -ENOENT;
    goto quit;
}

但是内核在检查空值时给了我一个“哎呀”。我不知道如何避免它,因为我正在检查 null 并做我应该做的事情。

4

3 回答 3

1

看起来您怀疑指针错误,唯一可能在您的代码中生成此类 oops 的指针是 kernel_args。

更多提示: - 内核是受信任的代码,您不应该检查 NULL 指针(除非您正在编写内核模块测试等) - 您的 printk 使用错误,您缺少 printk 日志级别,例如: printk(KERN_ALERT "Hello世界\n");

于 2012-12-28T02:03:36.870 回答
0

检查内核空间参数的有效性。

喜欢 :

if (!kargs)
    if(kargs->infile == NULL)
于 2012-12-27T22:58:32.947 回答
0

由于 filp_open 在出现问题时不会返回 NULL,因此您应该使用 IS_ERR 来检查错误是否发生。

喜欢:

if(IS_ERR(inputfile))
    goto quit;
于 2018-05-09T03:26:23.800 回答