Kernel 而kthread中的循环会导致内存泄漏

Kernel 而kthread中的循环会导致内存泄漏,kernel,scheduling,multithreading,memory-leaks,Kernel,Scheduling,Multithreading,Memory Leaks,我正在开发一个内核(4.7.4)模块,它用while循环启动一个kthread。这个while循环/kthread尽可能快地在一个隔离的cpu内核(nohz_full=3 rcu_nocbs=3 isolcpus=3)上运行,并生成一些复杂的东西。一切正常,但我发现内核内存泄漏。因此,我使用了一个非常简单的kthread进行测试: static int thread_function(void *data){ while(stop_thread) rmb(); return 0;

我正在开发一个内核(4.7.4)模块,它用while循环启动一个kthread。这个while循环/kthread尽可能快地在一个隔离的cpu内核(nohz_full=3 rcu_nocbs=3 isolcpus=3)上运行,并生成一些复杂的东西。一切正常,但我发现内核内存泄漏。因此,我使用了一个非常简单的kthread进行测试:

static int thread_function(void *data){

   while(stop_thread) rmb();

   return 0;
}
不幸的是,同样的结果。Slabtop告诉我,dentry、filp和kmalloc-256(有时是kmalloc-64)分配永久内存,直到我的kthread终止。以下函数调用负责:

  • filp:get_empty_filp
  • 丹特里:你要什么
  • kmalloc-256:准备和复制信用卡
我认为这与RCU调度程序有关,但我不知道在哪里以及如何搜索

你能帮我吗

提前谢谢