Patch "parisc: Clear stale IIR value on instruction access rights trap" has been added to the 5.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    parisc: Clear stale IIR value on instruction access rights trap

to the 5.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     parisc-clear-stale-iir-value-on-instruction-access-r.patch
and it can be found in the queue-5.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 0896c841802374350db1d2a827cb1aceb4b3ccc7
Author: Helge Deller <deller@xxxxxx>
Date:   Wed Dec 8 11:06:52 2021 +0100

    parisc: Clear stale IIR value on instruction access rights trap
    
    [ 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@xxxxxxxx>
    Signed-off-by: Helge Deller <deller@xxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c
index a52c7abf2ca49..43f56335759a4 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 */



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux