On Fri, Apr 08, 2022 at 03:34:43PM -0700, Song Liu wrote: > +static void *bpf_prog_pack_vmalloc(unsigned long size) > +{ > +#if defined(MODULES_VADDR) > + unsigned long start = MODULES_VADDR; > + unsigned long end = MODULES_END; > +#else > + unsigned long start = VMALLOC_START; > + unsigned long end = VMALLOC_END; > +#endif > + > + return __vmalloc_node_range(size, PAGE_SIZE, start, end, GFP_KERNEL, PAGE_KERNEL, > + VM_DEFER_KMEMLEAK | VM_ALLOW_HUGE_VMAP, > + NUMA_NO_NODE, __builtin_return_address(0)); > +} Instead of having this magic in bpf I think a module_alloc_large would seems like the better interface here.