lkml.org 
[lkml]   [2018]   [Mar]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 74/76] x86/usercopy: Replace open coded stac/clac with __uaccess_{begin, end}
    3.16.56-rc1 review patch.  If anyone has any objections, please let me know.

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

    From: Dan Williams <dan.j.williams@intel.com>

    commit b5c4ae4f35325d520b230bab6eb3310613b72ac1 upstream.

    In preparation for converting some __uaccess_begin() instances to
    __uacess_begin_nospec(), make sure all 'from user' uaccess paths are
    using the _begin(), _end() helpers rather than open-coded stac() and
    clac().

    No functional changes.

    Suggested-by: Ingo Molnar <mingo@redhat.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-arch@vger.kernel.org
    Cc: Tom Lendacky <thomas.lendacky@amd.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: kernel-hardening@lists.openwall.com
    Cc: gregkh@linuxfoundation.org
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: torvalds@linux-foundation.org
    Cc: alan@linux.intel.com
    Link: https://lkml.kernel.org/r/151727416438.33451.17309465232057176966.stgit@dwillia2-desk3.amr.corp.intel.com
    [bwh: Backported to 3.16:
    - Convert several more functions to use __uaccess_begin_nospec(), that
    are just wrappers in mainline
    - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    arch/x86/lib/usercopy_32.c | 8 ++++----
    1 file changed, 4 insertions(+), 4 deletions(-)

    --- a/arch/x86/lib/usercopy_32.c
    +++ b/arch/x86/lib/usercopy_32.c
    @@ -570,12 +570,12 @@ do { \
    unsigned long __copy_to_user_ll(void __user *to, const void *from,
    unsigned long n)
    {
    - stac();
    + __uaccess_begin();
    if (movsl_is_ok(to, from, n))
    __copy_user(to, from, n);
    else
    n = __copy_user_intel(to, from, n);
    - clac();
    + __uaccess_end();
    return n;
    }
    EXPORT_SYMBOL(__copy_to_user_ll);
    @@ -583,12 +583,12 @@ EXPORT_SYMBOL(__copy_to_user_ll);
    unsigned long __copy_from_user_ll(void *to, const void __user *from,
    unsigned long n)
    {
    - stac();
    + __uaccess_begin();
    if (movsl_is_ok(to, from, n))
    __copy_user_zeroing(to, from, n);
    else
    n = __copy_user_zeroing_intel(to, from, n);
    - clac();
    + __uaccess_end();
    return n;
    }
    EXPORT_SYMBOL(__copy_from_user_ll);
    @@ -596,13 +596,13 @@ EXPORT_SYMBOL(__copy_from_user_ll);
    unsigned long __copy_from_user_ll_nozero(void *to, const void __user *from,
    unsigned long n)
    {
    - stac();
    + __uaccess_begin();
    if (movsl_is_ok(to, from, n))
    __copy_user(to, from, n);
    else
    n = __copy_user_intel((void __user *)to,
    (const void *)from, n);
    - clac();
    + __uaccess_end();
    return n;
    }
    EXPORT_SYMBOL(__copy_from_user_ll_nozero);
    @@ -610,7 +610,7 @@ EXPORT_SYMBOL(__copy_from_user_ll_nozero
    unsigned long __copy_from_user_ll_nocache(void *to, const void __user *from,
    unsigned long n)
    {
    - stac();
    + __uaccess_begin();
    #ifdef CONFIG_X86_INTEL_USERCOPY
    if (n > 64 && cpu_has_xmm2)
    n = __copy_user_zeroing_intel_nocache(to, from, n);
    @@ -619,7 +619,7 @@ unsigned long __copy_from_user_ll_nocach
    #else
    __copy_user_zeroing(to, from, n);
    #endif
    - clac();
    + __uaccess_end();
    return n;
    }
    EXPORT_SYMBOL(__copy_from_user_ll_nocache);
    @@ -627,7 +627,7 @@ EXPORT_SYMBOL(__copy_from_user_ll_nocach
    unsigned long __copy_from_user_ll_nocache_nozero(void *to, const void __user *from,
    unsigned long n)
    {
    - stac();
    + __uaccess_begin();
    #ifdef CONFIG_X86_INTEL_USERCOPY
    if (n > 64 && cpu_has_xmm2)
    n = __copy_user_intel_nocache(to, from, n);
    @@ -636,7 +636,7 @@ unsigned long __copy_from_user_ll_nocach
    #else
    __copy_user(to, from, n);
    #endif
    - clac();
    + __uaccess_end();
    return n;
    }
    EXPORT_SYMBOL(__copy_from_user_ll_nocache_nozero);
    \
     
     \ /
      Last update: 2018-03-12 04:13    [W:4.208 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site