为了测试内核泄漏内存时的行为,我正在编写一个不断分配内存的内核模块,例如代码看起来像
int bytesLeaked = 128000;
char *var = kmalloc(bytesLeaked, GFP_KERNEL);
if (var != NULL)
printk("leaked %d bytes at address %x\n", bytesLeaked, (unsigned int)var);
此代码在 init_module 中。我有以下问题
- 如何判断代码是否有内存泄露?lsmod 没有透露太多。
- 网上的教程只展示了init_module和exit_module中的代码。如果我希望在插入模块之后但退出之前的一段时间内进行内存分配怎么办?
- 我是否可以编写仅在用户发出指令时才泄漏内存的代码,例如,用户空间程序可以进行系统调用,从而导致模块泄漏内存?