• Thomas Gleixner's avatar
    context_tracking: Ensure that the critical path cannot be instrumented · 0372007f
    Thomas Gleixner authored
    
    
    context tracking lacks a few protection mechanisms against instrumentation:
    
     - While the core functions are marked NOKPROBE they lack protection
       against function tracing which is required as the function entry/exit
       points can be utilized by BPF.
    
     - static functions invoked from the protected functions need to be marked
       as well as they can be instrumented otherwise.
    
     - using plain inline allows the compiler to emit traceable and probable
       functions.
    
    Fix this by marking the functions noinstr and converting the plain inlines
    to __always_inline.
    
    The NOKPROBE_SYMBOL() annotations are removed as the .noinstr.text section
    is already excluded from being probed.
    
    Cures the following objtool warnings:
    
     vmlinux.o: warning: objtool: enter_from_user_mode()+0x34: call to __context_tracking_exit() leaves .noinstr.text section
     vmlinux.o: warning: objtool: prepare_exit_to_usermode()+0x29: call to __context_tracking_enter() leaves .noinstr.text section
     vmlinux.o: warning: objtool: syscall_return_slowpath()+0x29: call to __context_tracking_enter() leaves .noinstr.text section
     vmlinux.o: warning: objtool: do_syscall_64()+0x7f: call to __context_tracking_enter() leaves .noinstr.text section
     vmlinux.o: warning: objtool: do_int80_syscall_32()+0x3d: call to __context_tracking_enter() leaves .noinstr.text section
     vmlinux.o: warning: objtool: do_fast_syscall_32()+0x9c: call to __context_tracking_enter() leaves .noinstr.text section
    
    and generates new ones...
    
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Reviewed-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
    Reviewed-by: default avatarAlexandre Chartre <alexandre.chartre@oracle.com>
    Acked-by: default avatarPeter Zijlstra <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20200505134340.811520478@linutronix.de
    
    
    0372007f