lkml.org 
[lkml]   [2017]   [May]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.10 104/129] sparc64: fix fault handling in NGbzero.S and GENbzero.S
    Date
    4.10-stable review patch.  If anyone has any objections, please let me know.

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

    From: Dave Aldridge <david.j.aldridge@oracle.com>

    commit 3c7f62212018b904ae17f5636ead18a4dca3a88f upstream.

    When any of the functions contained in NGbzero.S and GENbzero.S
    vector through *bzero_from_clear_user, we may end up taking a
    fault when executing one of the store alternate address space
    instructions. If this happens, the exception handler does not
    restore the %asi register.

    This commit fixes the issue by introducing a new exception
    handler that ensures the %asi register is restored when
    a fault is handled.

    Orabug: 25577560

    Signed-off-by: Dave Aldridge <david.j.aldridge@oracle.com>
    Reviewed-by: Rob Gardner <rob.gardner@oracle.com>
    Reviewed-by: Babu Moger <babu.moger@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/sparc/kernel/head_64.S | 6 ++++++
    arch/sparc/lib/GENbzero.S | 2 +-
    arch/sparc/lib/NGbzero.S | 2 +-
    3 files changed, 8 insertions(+), 2 deletions(-)

    --- a/arch/sparc/kernel/head_64.S
    +++ b/arch/sparc/kernel/head_64.S
    @@ -935,3 +935,9 @@ ENTRY(__retl_o1)
    retl
    mov %o1, %o0
    ENDPROC(__retl_o1)
    +
    +ENTRY(__retl_o1_asi)
    + wr %o5, 0x0, %asi
    + retl
    + mov %o1, %o0
    +ENDPROC(__retl_o1_asi)
    --- a/arch/sparc/lib/GENbzero.S
    +++ b/arch/sparc/lib/GENbzero.S
    @@ -8,7 +8,7 @@
    98: x,y; \
    .section __ex_table,"a";\
    .align 4; \
    - .word 98b, __retl_o1; \
    + .word 98b, __retl_o1_asi;\
    .text; \
    .align 4;

    --- a/arch/sparc/lib/NGbzero.S
    +++ b/arch/sparc/lib/NGbzero.S
    @@ -8,7 +8,7 @@
    98: x,y; \
    .section __ex_table,"a";\
    .align 4; \
    - .word 98b, __retl_o1; \
    + .word 98b, __retl_o1_asi;\
    .text; \
    .align 4;


    \
     
     \ /
      Last update: 2017-05-11 16:19    [W:4.060 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site