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; } static void kernel_exit(void) { } Now in this case if we do rmmod then memory allocated by kernel_init will not be freed but this patch will detect such kind of bugs in kernel module code. Also We have seen bugs in some kernel modules where they allocate some memory and gets removed without freeing them and if new module gets loaded in place of removed module then /proc/vmallocinfo shows wrong information. vmalloc info will show pages getting allocated by new module. So these logs will help in detecting such issues. > > static void free_module(struct module *mod) > > { > > + check_memory_leak(mod); > > + >Of course, vfree() has not been called yet. It is the beginning of >free_module(). vfree() is one of the last things you need to do. See >module_memfree(). If I am not missing something, you get pr_err() >everytime a module is unloaded. This patch is not to detect memory allocated by kernel. module_memfree will allocated by kernel for kernel modules but our intent is to detect memory allocated directly by kernel modules and not getting freed. Regards, Vaneet Narang