为了测试内核泄漏内存时的行为,我正在编写一个内核模块,不断地分配内存,例如代码看起来像这样:
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中的代码。如果我想在模块插入后但在退出之前的一段时间内进行内存分配怎么办?
- 我能否编写仅在用户发出指令时才会泄漏内存的代码,例如,用户空间程序可以调用系统调用,导致模块泄漏内存吗?