On Wed, Oct 09, 2019 at 10:41:35PM -0400, Steven Rostedt wrote: > On Tue, 8 Oct 2019 10:43:35 -0400 > Steven Rostedt <rost...@goodmis.org> wrote: > > > > BTW, I'd really like to take this patch series through my tree. That > > way I can really hammer it, as well as I have code that will be built > > on top of it. > > I did a bit of hammering and found two bugs. One I sent a patch to fix > (adding a module when tracing is enabled), but the other bug I > triggered, I'm too tired to debug right now. But figured I'd mention it > anyway.
I'm thinking this should fix it... Just not sure this is the right plce, then again, we're doing the same thing in jump_label and static_call, so perhaps we should do it like this. --- a/arch/x86/kernel/alternative.c +++ b/arch/x86/kernel/alternative.c @@ -1230,10 +1230,15 @@ void text_poke_queue(void *addr, const v * dynamically allocated memory. This function should be used when it is * not possible to allocate memory. */ -void text_poke_bp(void *addr, const void *opcode, size_t len, const void *emulate) +void __ref text_poke_bp(void *addr, const void *opcode, size_t len, const void *emulate) { struct text_poke_loc tp; + if (unlikely(system_state == SYSTEM_BOOTING)) { + text_poke_early(addr, opcode, len); + return; + } + text_poke_loc_init(&tp, addr, opcode, len, emulate); text_poke_bp_batch(&tp, 1); }