• Dimitris Papastamos's avatar
    sp_min: Implement workaround for CVE-2017-5715 · 7343505d
    Dimitris Papastamos authored
    
    
    This patch introduces two workarounds for ARMv7 systems.  The
    workarounds need to be applied prior to any `branch` instruction in
    secure world.  This is achieved using a custom vector table where each
    entry is an `add sp, sp, #1` instruction.
    
    On entry to monitor mode, once the sequence of `ADD` instructions is
    executed, the branch target buffer (BTB) is invalidated.  The bottom
    bits of `SP` are then used to decode the exception entry type.
    
    A side effect of this change is that the exception vectors are
    installed before the CPU specific reset function.  This is now
    consistent with how it is done on AArch64.
    
    Note, on AArch32 systems, the exception vectors are typically tightly
    integrated with the secure payload (e.g. the Trusted OS).  This
    workaround will need porting to each secure payload that requires it.
    
    The patch to modify the AArch32 per-cpu vbar to the corresponding
    workaround vector table according to the CPU type will be done in a
    later patch.
    
    Change-Id: I5786872497d359e496ebe0757e8017fa98f753fa
    Signed-off-by: default avatarDimitris Papastamos <dimitris.papastamos@arm.com>
    7343505d
smcc_helpers.h 4.99 KB