lkml.org 
[lkml]   [2020]   [Jun]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 28/61] ARM: uaccess: integrate uaccess_save and uaccess_restore
    Date
    From: Russell King <rmk+kernel@armlinux.org.uk>

    [ Upstream commit 8ede890b0bcebe8c760aacfe20e934d98c3dc6aa ]

    Integrate uaccess_save / uaccess_restore macros into the new
    uaccess_entry / uaccess_exit macros respectively.

    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/arm/include/asm/uaccess-asm.h | 30 +++++++++++++-----------------
    1 file changed, 13 insertions(+), 17 deletions(-)

    diff --git a/arch/arm/include/asm/uaccess-asm.h b/arch/arm/include/asm/uaccess-asm.h
    index d475e3e8145d..e46468b91eaa 100644
    --- a/arch/arm/include/asm/uaccess-asm.h
    +++ b/arch/arm/include/asm/uaccess-asm.h
    @@ -67,30 +67,23 @@
    #endif
    .endm

    - .macro uaccess_save, tmp
    #ifdef CONFIG_CPU_SW_DOMAIN_PAN
    - mrc p15, 0, \tmp, c3, c0, 0
    - str \tmp, [sp, #SVC_DACR]
    -#endif
    - .endm
    -
    - .macro uaccess_restore
    -#ifdef CONFIG_CPU_SW_DOMAIN_PAN
    - ldr r0, [sp, #SVC_DACR]
    - mcr p15, 0, r0, c3, c0, 0
    +#define DACR(x...) x
    +#else
    +#define DACR(x...)
    #endif
    - .endm

    /*
    * Save the address limit on entry to a privileged exception and
    * if using PAN, save and disable usermode access.
    */
    .macro uaccess_entry, tsk, tmp0, tmp1, tmp2, disable
    - ldr \tmp0, [\tsk, #TI_ADDR_LIMIT]
    - mov \tmp1, #TASK_SIZE
    - str \tmp1, [\tsk, #TI_ADDR_LIMIT]
    - str \tmp0, [sp, #SVC_ADDR_LIMIT]
    - uaccess_save \tmp0
    + ldr \tmp1, [\tsk, #TI_ADDR_LIMIT]
    + mov \tmp2, #TASK_SIZE
    + str \tmp2, [\tsk, #TI_ADDR_LIMIT]
    + DACR( mrc p15, 0, \tmp0, c3, c0, 0)
    + DACR( str \tmp0, [sp, #SVC_DACR])
    + str \tmp1, [sp, #SVC_ADDR_LIMIT]
    .if \disable
    uaccess_disable \tmp0
    .endif
    @@ -99,8 +92,11 @@
    /* Restore the user access state previously saved by uaccess_entry */
    .macro uaccess_exit, tsk, tmp0, tmp1
    ldr \tmp1, [sp, #SVC_ADDR_LIMIT]
    - uaccess_restore
    + DACR( ldr \tmp0, [sp, #SVC_DACR])
    str \tmp1, [\tsk, #TI_ADDR_LIMIT]
    + DACR( mcr p15, 0, \tmp0, c3, c0, 0)
    .endm

    +#undef DACR
    +
    #endif /* __ASM_UACCESS_ASM_H__ */
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-06-01 19:59    [W:3.447 / U:0.252 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site