return 0;
 }
+
+#ifdef MODULES_VADDR
+void *module_alloc(unsigned long size)
+{
+       BUILD_BUG_ON(TASK_SIZE > MODULES_VADDR);
+
+       return __vmalloc_node_range(size, 1, MODULES_VADDR, MODULES_END, GFP_KERNEL,
+                                   PAGE_KERNEL_EXEC, VM_FLUSH_RESET_PERMS, NUMA_NO_NODE,
+                                   __builtin_return_address(0));
+}
+#endif
 
        unsigned long k_end = (unsigned long)kasan_mem_to_shadow((void *)VMALLOC_END);
 
        kasan_update_early_region(k_start, k_end, __pte(0));
+
+#ifdef MODULES_VADDR
+       k_start = (unsigned long)kasan_mem_to_shadow((void *)MODULES_VADDR);
+       k_end = (unsigned long)kasan_mem_to_shadow((void *)MODULES_END);
+       kasan_update_early_region(k_start, k_end, __pte(0));
+#endif
 }
 
 void __init kasan_mmu_init(void)