Re: [PATCH 3/3] jump_label: make initial NOP patching the special case

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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)



[Index of Archives]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux