lkml.org 
[lkml]   [2019]   [Oct]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 02/15] riscv: cleanup do_trap_break
    Date
    If we always compile the get_break_insn_length inline function we can
    remove the ifdefs and let dead code elimination take care of the warn
    branch that is now unreadable because the report_bug stub always
    returns BUG_TRAP_TYPE_BUG.

    Signed-off-by: Christoph Hellwig <hch@lst.de>
    ---
    arch/riscv/kernel/traps.c | 26 ++++++--------------------
    1 file changed, 6 insertions(+), 20 deletions(-)

    diff --git a/arch/riscv/kernel/traps.c b/arch/riscv/kernel/traps.c
    index 1ac75f7d0bff..10a17e545f43 100644
    --- a/arch/riscv/kernel/traps.c
    +++ b/arch/riscv/kernel/traps.c
    @@ -111,7 +111,6 @@ DO_ERROR_INFO(do_trap_ecall_s,
    DO_ERROR_INFO(do_trap_ecall_m,
    SIGILL, ILL_ILLTRP, "environment call from M-mode");

    -#ifdef CONFIG_GENERIC_BUG
    static inline unsigned long get_break_insn_length(unsigned long pc)
    {
    bug_insn_t insn;
    @@ -120,28 +119,15 @@ static inline unsigned long get_break_insn_length(unsigned long pc)
    return 0;
    return (((insn & __INSN_LENGTH_MASK) == __INSN_LENGTH_32) ? 4UL : 2UL);
    }
    -#endif /* CONFIG_GENERIC_BUG */

    asmlinkage void do_trap_break(struct pt_regs *regs)
    {
    - if (user_mode(regs)) {
    - force_sig_fault(SIGTRAP, TRAP_BRKPT,
    - (void __user *)(regs->sepc));
    - return;
    - }
    -#ifdef CONFIG_GENERIC_BUG
    - {
    - enum bug_trap_type type;
    -
    - type = report_bug(regs->sepc, regs);
    - if (type == BUG_TRAP_TYPE_WARN) {
    - regs->sepc += get_break_insn_length(regs->sepc);
    - return;
    - }
    - }
    -#endif /* CONFIG_GENERIC_BUG */
    -
    - die(regs, "Kernel BUG");
    + if (user_mode(regs))
    + force_sig_fault(SIGTRAP, TRAP_BRKPT, (void __user *)regs->sepc);
    + else if (report_bug(regs->sepc, regs) == BUG_TRAP_TYPE_WARN)
    + regs->sepc += get_break_insn_length(regs->sepc);
    + else
    + die(regs, "Kernel BUG");
    }

    #ifdef CONFIG_GENERIC_BUG
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-10-17 19:38    [W:4.089 / U:0.364 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site