> On Dec 15, 2021, at 1:17 AM, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote: > > 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. Yeah, it was a typo. I meant to say ROX. Thanks, Song > > >> +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; >> +}