[lkml]   [2010]   [Dec]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[089/127] ARM: 6489/1: thumb2: fix incorrect optimisation in usracc
    2.6.32-stable review patch.  If anyone has any objections, please let us know.


    From: Will Deacon <>

    commit 1142b71d85894dcff1466dd6c871ea3c89e0352c upstream.

    Commit 8b592783 added a Thumb-2 variant of usracc which, when it is
    called with \rept=2, calls usraccoff once with an offset of 0 and
    secondly with a hard-coded offset of 4 in order to avoid incrementing
    the pointer again. If \inc != 4 then we will store the data to the wrong
    offset from \ptr. Luckily, the only caller that passes \rept=2 to this
    function is __clear_user so we haven't been actively corrupting user data.

    This patch fixes usracc to pass \inc instead of #4 to usraccoff
    when it is called a second time.

    Reported-by: Tony Thompson <>
    Acked-by: Catalin Marinas <>
    Signed-off-by: Will Deacon <>
    Signed-off-by: Russell King <>
    Signed-off-by: Greg Kroah-Hartman <>

    arch/arm/include/asm/assembler.h | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/arch/arm/include/asm/assembler.h
    +++ b/arch/arm/include/asm/assembler.h
    @@ -215,7 +215,7 @@
    @ Slightly optimised to avoid incrementing the pointer twice
    usraccoff \instr, \reg, \ptr, \inc, 0, \cond, \abort
    .if \rept == 2
    - usraccoff \instr, \reg, \ptr, \inc, 4, \cond, \abort
    + usraccoff \instr, \reg, \ptr, \inc, \inc, \cond, \abort

    add\cond \ptr, #\rept * \inc

     \ /
      Last update: 2010-12-08 02:11    [W:2.637 / U:1.480 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site