как определить утечку памяти модулем ядра Linux

Для тестирования поведения ядра при утечке памяти я пишу модуль ядра, который постоянно выделяет память, например, код выглядит так

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. У меня возникли следующие вопросы

  1. Как определить, что код утекает из памяти? lsmod ничего не показывает.
  2. Учебники в интернете показывают только код в init_module и exit_module. Что если я хочу выполнить распределение памяти в течение некоторого времени после того, как модуль был вставлен, но перед выходом из него?
  3. Могу ли я написать код, который утекает из памяти только тогда, когда пользователь дает команду на это, например, может ли программа в пространстве пользователя сделать системный вызов, который заставит модуль утекать из памяти?
9
задан skaffman 6 May 2011 в 11:17
поделиться