Skip to content
  • Michael Ellerman's avatar
    lkdtm: Mark lkdtm_rodata_do_nothing() notrace · c012268b
    Michael Ellerman authored
    lkdtm_rodata_do_nothing() is an empty function which is generated in
    order to test the non-executability of rodata.
    
    Currently if function tracing is enabled then an mcount callsite will be
    generated for lkdtm_rodata_do_nothing(), and it will appear in the list
    of available functions for function tracing (available_filter_functions).
    
    Given it's purpose purely as a test function, it seems preferable for
    lkdtm_rodata_do_nothing() to be marked notrace, so it doesn't appear as
    traceable.
    
    This also avoids triggering a linker bug on powerpc:
    
      https://sourceware.org/bugzilla/show_bug.cgi?id=20428
    
    
    
    When the linker sees code that needs to generate a call stub, eg. a
    branch to mcount(), it assumes the section is executable and
    dereferences a NULL pointer leading to a linker segfault. Marking
    lkdtm_rodata_do_nothing() notrace avoids triggering the bug because the
    function contains no other function calls.
    
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: default avatarKees Cook <keescook@chromium.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    c012268b