Hi I find there is some drivers use kmalloc to allocate large Memorys during module_init, some can be changed to use vmalloc To save some low mem, I add log in kernel to track , And list them here: https://git.kernel.org/cgit/linux/kernel/git/will/linux.git/tree/drivers/usb... https://git.kernel.org/cgit/linux/kernel/git/will/linux.git/tree/sound/soc/s... https://git.kernel.org/cgit/linux/kernel/git/will/linux.git/tree/net/netfilt... https://git.kernel.org/cgit/linux/kernel/git/will/linux.git/tree/net/netfilt... https://git.kernel.org/cgit/linux/kernel/git/will/linux.git/tree/net/netfilt... https://git.kernel.org/cgit/linux/kernel/git/will/linux.git/tree/net/netfilt... https://git.kernel.org/cgit/linux/kernel/git/will/linux.git/tree/drivers/inp... they allocate large memory from 10k~64K , this will use lots of low mem, instead if we use vmalloc for these drivers , it will be good for some devices like smart phone, we often encounter some errors like kmalloc failed because there is not enough low mem , especially when the device has physical memory less than 1GB . could this module change the memory allocation into vmalloc ? I was thinking that if we can introduce a helper function in kmalloc.h like this : Kmalloc(size, flags) { If (size > PAGE_SIZE && flags&CAN_USE_VMALLOC_FLAG) return vmalloc(size); Else return real_kmalloc(size); } Kfree(ptr) { If (is_vmalloc_addr(ptr)) Vfree(ptr); Else Kfree(ptr); } But we need add some flags to ensure always use kmalloc for Some special use (dma etc..) How do you think of it ? Thanks