Hi Michal, On Wed, Mar 29, 2017 at 3:43 AM, Michal Hocko <mhocko@xxxxxxxxxx> wrote: > On Wed 29-03-17 09:23:32, Vaneet Narang wrote: >> Hi, >> >> >> Hmm, how can you track _all_ vmalloc allocations done on behalf of the >> >> module? It is quite some time since I've checked kernel/module.c but >> >> from my vague understading your check is basically only about statically >> >> vmalloced areas by module loader. Is that correct? If yes then is this >> >> actually useful? Were there any bugs in the loader code recently? What >> >> led you to prepare this patch? All this should be part of the changelog! >> >> First of all there is no issue in kernel/module.c. This patch add functionality >> to detect scenario where some kernel module does some memory allocation but gets >> unloaded without doing vfree. For example >> static int kernel_init(void) >> { >> char * ptr = vmalloc(400 * 1024); >> return 0; >> } > > How can you track that allocation back to the module? Does this patch > actually works at all? Also why would be vmalloc more important than > kmalloc allocations? Doesn't the patch use caller's (in this case, the module is the caller) text address for tracking this? vma->vm->caller should track the caller doing the allocation? >From the code: vmalloc -> __vmalloc_node_flags In __vmalloc_node_flags: return __vmalloc_node(size, 1, flags, PAGE_KERNEL, node, __builtin_return_address(0)); Since __vmalloc_node_flags is marked as inline, I believe the __builtin_return_address(0) will return the return address of the original vmalloc() call which is in the module calling vmalloc. Regards, Joel -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>