[RFC PATCH 2/3] powerpc/lib: Initialize a temporary mm for code patching
Steven Rostedt
rostedt at goodmis.org
Fri Apr 24 23:11:21 AEST 2020
On Fri, 17 Apr 2020 10:57:10 +1000
Michael Ellerman <mpe at ellerman.id.au> wrote:
> >>> Does it needs to be a BUG_ON() ? Can't we fail gracefully with just a
> >>> WARN_ON ?
> >>>
> >>
> >> I'm not sure what failing gracefully means here? The main reason this could
> >> fail is if there is not enough memory to allocate the patching_mm. The
> >> previous implementation had this justification for BUG_ON():
> >
> > But the system can continue running just fine after this failure.
> > Only the things that make use of code patching will fail (ftrace, kgdb, ...)
>
> That's probably true of ftrace, but we can't fail patching for jump
> labels (static keys).
>
> See:
>
> void arch_jump_label_transform(struct jump_entry *entry,
> enum jump_label_type type)
> {
> u32 *addr = (u32 *)(unsigned long)entry->code;
>
> if (type == JUMP_LABEL_JMP)
> patch_branch(addr, entry->target, 0);
> else
> patch_instruction(addr, PPC_INST_NOP);
> }
I would still error on a WARN_ON() as a lot of static keys should still
work if they don't get switched over.
If a user is concerned about something like this, they can always set
panic_on_warn.
-- Steve
More information about the Linuxppc-dev
mailing list