lkml.org 
[lkml]   [2021]   [Dec]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.15 20/26] parisc: Clear stale IIR value on instruction access rights trap
    Date
    From: Helge Deller <deller@gmx.de>

    [ Upstream commit 484730e5862f6b872dca13840bed40fd7c60fa26 ]

    When a trap 7 (Instruction access rights) occurs, this means the CPU
    couldn't execute an instruction due to missing execute permissions on
    the memory region. In this case it seems the CPU didn't even fetched
    the instruction from memory and thus did not store it in the cr19 (IIR)
    register before calling the trap handler. So, the trap handler will find
    some random old stale value in cr19.

    This patch simply overwrites the stale IIR value with a constant magic
    "bad food" value (0xbaadf00d), in the hope people don't start to try to
    understand the various random IIR values in trap 7 dumps.

    Noticed-by: John David Anglin <dave.anglin@bell.net>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/parisc/kernel/traps.c | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c
    index 747c328fb8862..197cb8480350c 100644
    --- a/arch/parisc/kernel/traps.c
    +++ b/arch/parisc/kernel/traps.c
    @@ -729,6 +729,8 @@ void notrace handle_interruption(int code, struct pt_regs *regs)
    }
    mmap_read_unlock(current->mm);
    }
    + /* CPU could not fetch instruction, so clear stale IIR value. */
    + regs->iir = 0xbaadf00d;
    fallthrough;
    case 27:
    /* Data memory protection ID trap */
    --
    2.34.1
    \
     
     \ /
      Last update: 2021-12-27 20:05    [W:6.089 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site