• Joe Lawrence's avatar
    stacktrace: Unbreak stack_trace_save_tsk_reliable() · 7eaf51a2
    Joe Lawrence authored
    Miroslav reported that the livepatch self-tests were failing, specifically
    a case in which the consistency model ensures that a current executing
    function is not allowed to be patched, "TEST: busy target module".
    
    Recent renovations of stack_trace_save_tsk_reliable() left it returning
    only an -ERRNO success indication in some configuration combinations:
    
      klp_check_stack()
        ret = stack_trace_save_tsk_reliable()
          #ifdef CONFIG_ARCH_STACKWALK && CONFIG_HAVE_RELIABLE_STACKTRACE
            stack_trace_save_tsk_reliable()
              ret = arch_stack_walk_reliable()
                return 0
                return -EINVAL
              ...
              return ret;
        ...
        if (ret < 0)
          /* stack_trace_save_tsk_reliable error */
        nr_entries = ret;                               << 0
    
    Previously (and currently for !CONFIG_ARCH_STACKWALK &&
    CONFIG_HAVE_RELIABLE_STACKTRACE) stack_trace_save_tsk_reliable() returned
    the number of entries that it consumed in the passed storage array.
    
    In the case of the above config and trace, be sure to return the
    stacktrace_cookie.len on stack_trace_save_tsk_reliable() success.
    
    Fixes: 25e39e32 ("livepatch: Simplify stack trace retrieval")
    Reported-by: default avatarMiroslav Benes <mbenes@suse.cz>
    Signed-off-by: default avatarJoe Lawrence <joe.lawrence@redhat.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Reviewed-by: default avatarKamalesh Babulal <kamalesh@linux.vnet.ibm.com>
    Acked-by: default avatarJosh Poimboeuf <jpoimboe@redhat.com>
    Cc: live-patching@vger.kernel.org
    Cc: jikos@kernel.org
    Cc: pmladek@suse.com
    Link: https://lkml.kernel.org/r/20190517185117.24642-1-joe.lawrence@redhat.com
    7eaf51a2
stacktrace.c 9.61 KB