lkml.org 
[lkml]   [2010]   [Aug]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[17/59] ARM: Tighten check for allowable CPSR values
    2.6.32-stable review patch.  If anyone has any objections, please let us know.

    ------------------

    From: Russell King <rmk+kernel@arm.linux.org.uk>

    commit 41e2e8fd34fff909a0e40129f6ac4233ecfa67a9 upstream.

    Reviewed-by: Arve Hjønnevåg <arve@android.com>
    Acked-by: Dima Zavin <dima@android.com>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    arch/arm/include/asm/ptrace.h | 17 +++++++++++++----
    1 file changed, 13 insertions(+), 4 deletions(-)

    --- a/arch/arm/include/asm/ptrace.h
    +++ b/arch/arm/include/asm/ptrace.h
    @@ -150,15 +150,24 @@ struct pt_regs {
    */
    static inline int valid_user_regs(struct pt_regs *regs)
    {
    - if (user_mode(regs) && (regs->ARM_cpsr & PSR_I_BIT) == 0) {
    - regs->ARM_cpsr &= ~(PSR_F_BIT | PSR_A_BIT);
    - return 1;
    + unsigned long mode = regs->ARM_cpsr & MODE_MASK;
    +
    + /*
    + * Always clear the F (FIQ) and A (delayed abort) bits
    + */
    + regs->ARM_cpsr &= ~(PSR_F_BIT | PSR_A_BIT);
    +
    + if ((regs->ARM_cpsr & PSR_I_BIT) == 0) {
    + if (mode == USR_MODE)
    + return 1;
    + if (elf_hwcap & HWCAP_26BIT && mode == USR26_MODE)
    + return 1;
    }

    /*
    * Force CPSR to something logical...
    */
    - regs->ARM_cpsr &= PSR_f | PSR_s | (PSR_x & ~PSR_A_BIT) | PSR_T_BIT | MODE32_BIT;
    + regs->ARM_cpsr &= PSR_f | PSR_s | PSR_x | PSR_T_BIT | MODE32_BIT;
    if (!(elf_hwcap & HWCAP_26BIT))
    regs->ARM_cpsr |= USR_MODE;


    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2010-08-25 00:57    [W:0.022 / U:32.872 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site