Linuxカーネルモジュールでメモリセーフバグを検出する方法は?

Linuxカーネルモジュールでメモリセーフバグを検出する方法は?

先週、私はユーザーとカーネルスペースの間にメッセージを渡すことができる文字デバイスドライバを作成する簡単なカーネルモジュールの作業を行いました。

すべてが大丈夫です。 KEDRを見つけました(https://github.com/euspectre/kedr)、今メモリリークを検出することができます。

しかし問題は、これを検出する方法があるかということです。ボーダー間アクセスそして、次のようなその他のエラー初期化されていないメモリなど?ユーザー空間プログラムでは、時々セグフォルト、または私達は利用できますウォールグリーンほとんどのエラーを検出してみてください。

配列の範囲外で人為的に書き込みを試みたが、OSは文句を言わなかった。

答え1

カサン非常に近いですmemcheck。それがまさにその意味ですvalgrind

これはカーネルアドレスクリーナー[LWN.net 2014]。また、見ることができますソフトウェアタグベースのKASAN[LWN.net 2018]。

関連情報