パラメータとして構造体ポインタを受け取るカーネル関数fooを書いています
void foo(struct struct1 *param)
{
if(param!=NULL)
{
if(param->param1!=NULL)
{
if(param->param1->bool_value)
Some code
}
}
some code
}
この関数は、プロセスコンテキストで実行されます。上記の関数のこの行でクラッシュしました。if(param->param1->bool_value)
。このクラッシュは1回限りのクラッシュであり、二度と発生することはありませんでした。
BADVAアドレスは、ユーザースペースアドレスを指します。このアドレスはparam1->bool_valueのアドレスですか?もしそうなら、カーネルモードコードはcopy_from_userを使用せずにこのアドレスにアクセスして読み取ることができますか?