On Tue, May 16, 2023 at 02:02:11PM -0700, Kees Cook wrote: > For something that small, why not use the text_poke API? This looks like it's meant for patching existing kernel text, which isn't what I want - I'm generating new functions on the fly, one per btree node. I'm working up a new allocator - a (very simple) slab allocator where you pass a buffer, and it gives you a copy of that buffer mapped executable, but not writeable. It looks like we'll be able to convert bpf, kprobes, and ftrace trampolines to it; it'll consolidate a fair amount of code (particularly in bpf), and they won't have to burn a full page per allocation anymore. bpf has a neat trick where it maps the same page in two different locations, one is the executable location and the other is the writeable location - I'm stealing that. external api will be: void *jit_alloc(void *buf, size_t len, gfp_t gfp); void jit_free(void *buf); void jit_update(void *buf, void *new_code, size_t len); /* update an existing allocation */