On Tue, Dec 14, 2021 at 10:01:00PM -0800, Song Liu wrote: > This will be used by BPF jit compiler to dump JITed binary to a RWX huge OK, I read the actually allocator you use and the relevant code for this patch and the above is a typo, you meant: RX. Those pages are most definitely not writable. > +void *text_poke_jit(void *addr, const void *opcode, size_t len) > +{ > + unsigned long start = (unsigned long)addr; > + size_t patched = 0; > + > + if (WARN_ON_ONCE(core_kernel_text(start))) > + return NULL; > + > + while (patched < len) { > + unsigned long ptr = start + patched; > + size_t s; > + > + s = min_t(size_t, PAGE_SIZE * 2 - offset_in_page(ptr), len - patched); Cute, should work. > + > + __text_poke((void *)ptr, opcode + patched, s); > + patched += s; > + } > + return addr; > +}