On Wed, 15 Jun 2022 at 11:52, Mark Rutland <mark.rutland@xxxxxxx> wrote: > > On Wed, Jun 08, 2022 at 12:45:12PM +0200, Ard Biesheuvel wrote: > > Instead of defaulting to patching NOP opcodes at init time, and leaving > > it to the architectures to override this if this is not needed, switch > > to a model where doing nothing is the default. This is the common case > > by far, as only MIPS requires NOP patching at init time. On all other > > architectures, the correct encodings are emitted by the compiler and so > > no initial patching is needed. > > > > Signed-off-by: Ard Biesheuvel <ardb@xxxxxxxxxx> > > --- > > Documentation/staging/static-keys.rst | 3 --- > > arch/arc/kernel/jump_label.c | 13 ------------- > > arch/arm/kernel/jump_label.c | 6 ------ > > arch/arm64/kernel/jump_label.c | 11 ----------- > > arch/mips/include/asm/jump_label.h | 2 ++ > > arch/parisc/kernel/jump_label.c | 11 ----------- > > arch/riscv/kernel/jump_label.c | 12 ------------ > > arch/s390/kernel/jump_label.c | 5 ----- > > arch/x86/kernel/jump_label.c | 13 ------------- > > kernel/jump_label.c | 14 +++----------- > > 10 files changed, 5 insertions(+), 85 deletions(-) > > I have one minor comment below, but either way this is a nice cleanup (and I'm > always happy to see __weak functions disappear), so FWIW: > > Acked-by: Mark Rutland <mark.rutland@xxxxxxx> > > [...] > > > diff --git a/kernel/jump_label.c b/kernel/jump_label.c > > index b1ac2948be79..ff8576c00893 100644 > > --- a/kernel/jump_label.c > > +++ b/kernel/jump_label.c > > @@ -332,17 +332,9 @@ static int __jump_label_text_reserved(struct jump_entry *iter_start, > > return 0; > > } > > > > -/* > > - * Update code which is definitely not currently executing. > > - * Architectures which need heavyweight synchronization to modify > > - * running code can override this to make the non-live update case > > - * cheaper. > > - */ > > -void __weak __init_or_module arch_jump_label_transform_static(struct jump_entry *entry, > > - enum jump_label_type type) > > -{ > > - arch_jump_label_transform(entry, type); > > -} > > +#ifndef arch_jump_label_transform_static > > +#define arch_jump_label_transform_static(entry, type) > > +#endif > > It might be slightly better to make this a static inline stub so that we always > get the compiler to type-check it, e.g. > > | #ifndef arch_jump_label_transform_static > | static inline void arch_jump_label_transform_static(struct jump_entry *entry, > | enum jump_label_type type) > | { > | /* nothing to do on most architectures */ > | } > | #define arch_jump_label_transform_static arch_jump_label_transform_static > | #endif > Yeah, good point. Note that the current patch is broken because of this, as the empty string is not a statement, and so the if binds to the following line (I got a couple of bot warnings about this)