void foo()
{
char *var = kmalloc(1, GFP_KERNEL);
return;
}
このコードをリークするもので、これとユーザランドのメモリの違いは何リークですこのコードは、これとユーザーランドのメモリの違いは、カーネルレベルのメモリリークが発生します
これは今日のインタビューからの質問です。私はこの質問について悪いことをしました。
void foo()
{
char *var = kmalloc(1, GFP_KERNEL);
return;
}
このコードをリークするもので、これとユーザランドのメモリの違いは何リークですこのコードは、これとユーザーランドのメモリの違いは、カーネルレベルのメモリリークが発生します
これは今日のインタビューからの質問です。私はこの質問について悪いことをしました。
ユーザスペースでリークされたメモリはプロセス終了時に再利用されますが、カーネルスペースでリークされたメモリはマシンが再起動されるまで再利用できません。
マシンを再起動する必要はなく、実行ユニットだけを再起動する必要があります。その点で、kexecが行います。 – user562374
しかし、何かが 'foo()'を呼び出すとメモリリークだけが発生します... –
カーネルの土地でメモリがリークするだけではありません! –