在过去的一周里,我正在研究一个简单的内核模块,它创建了一个允许在用户和内核空间之间传递消息的字符设备驱动程序。
一切都很好,我找到了 KEDR ( https://github.com/euspectre/kedr ),现在我可以检测到内存泄漏。
但是,问题是:有没有办法检测越界访问和任何其他错误,例如未初始化的内存等?在用户空间程序中,我们有时可能会看到segfault,或者我们可以使用valgrind来尝试检测大多数这些错误。
我试图人为地写出数组的界限,操作系统没有抱怨。
在过去的一周里,我正在研究一个简单的内核模块,它创建了一个允许在用户和内核空间之间传递消息的字符设备驱动程序。
一切都很好,我找到了 KEDR ( https://github.com/euspectre/kedr ),现在我可以检测到内存泄漏。
但是,问题是:有没有办法检测越界访问和任何其他错误,例如未初始化的内存等?在用户空间程序中,我们有时可能会看到segfault,或者我们可以使用valgrind来尝试检测大多数这些错误。
我试图人为地写出数组的界限,操作系统没有抱怨。
KASAN与 KASAN非常接近
memcheck
,这就是您所说的意思valgrind
。它是内核地址净化器[LWN.net 2014]。另见基于软件标签的 KASAN [LWN.net 2018]。