lkml.org 
[lkml]   [2018]   [Mar]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 6/9] x86/fault: Dump user opcode bytes on fatal faults
    Date
    From: Borislav Petkov <bp@suse.de>

    Sometimes it is useful to see which user opcode bytes RIP points to
    when a fault happens: be it to rule out RIP corruption, to dump info
    early during boot, when doing core dumps is impossible due to not having
    writable fs yet.

    Sometimes it is useful if debugging an issue and one doesn't have access
    to the executable which caused the fault in order to disassemble it.

    That last aspect might have some security implications so
    show_unhandled_signals could be revisited for that or a new config
    option added.

    Signed-off-by: Borislav Petkov <bp@suse.de>
    ---
    arch/x86/mm/fault.c | 7 +++++--
    1 file changed, 5 insertions(+), 2 deletions(-)

    diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
    index 26865147a507..b3c19f734442 100644
    --- a/arch/x86/mm/fault.c
    +++ b/arch/x86/mm/fault.c
    @@ -850,6 +850,8 @@ static inline void
    show_signal_msg(struct pt_regs *regs, unsigned long error_code,
    unsigned long address, struct task_struct *tsk)
    {
    + const char *loglvl = task_pid_nr(tsk) > 1 ? KERN_INFO : KERN_EMERG;
    +
    if (!unhandled_signal(tsk, SIGSEGV))
    return;

    @@ -857,13 +859,14 @@ show_signal_msg(struct pt_regs *regs, unsigned long error_code,
    return;

    printk("%s%s[%d]: segfault at %lx ip %px sp %px error %lx",
    - task_pid_nr(tsk) > 1 ? KERN_INFO : KERN_EMERG,
    - tsk->comm, task_pid_nr(tsk), address,
    + loglvl, tsk->comm, task_pid_nr(tsk), address,
    (void *)regs->ip, (void *)regs->sp, error_code);

    print_vma_addr(KERN_CONT " in ", regs->ip);

    printk(KERN_CONT "\n");
    +
    + show_opcodes((u8 *)regs->ip, loglvl);
    }

    static void
    --
    2.13.0
    \
     
     \ /
      Last update: 2018-03-15 16:49    [W:4.088 / U:0.744 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site