lkml.org 
[lkml]   [2017]   [Apr]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 26/32] s390/uaccess: get_user() should zero on failure (again)
    Date
    4.4-stable review patch.  If anyone has any objections, please let me know.

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

    From: Heiko Carstens <heiko.carstens@de.ibm.com>

    commit d09c5373e8e4eaaa09233552cbf75dc4c4f21203 upstream.

    Commit fd2d2b191fe7 ("s390: get_user() should zero on failure")
    intended to fix s390's get_user() implementation which did not zero
    the target operand if the read from user space faulted. Unfortunately
    the patch has no effect: the corresponding inline assembly specifies
    that the operand is only written to ("=") and the previous value is
    discarded.

    Therefore the compiler is free to and actually does omit the zero
    initialization.

    To fix this simply change the contraint modifier to "+", so the
    compiler cannot omit the initialization anymore.

    Fixes: c9ca78415ac1 ("s390/uaccess: provide inline variants of get_user/put_user")
    Fixes: fd2d2b191fe7 ("s390: get_user() should zero on failure")
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

    --- a/arch/s390/include/asm/uaccess.h
    +++ b/arch/s390/include/asm/uaccess.h
    @@ -150,7 +150,7 @@ unsigned long __must_check __copy_to_use
    " jg 2b\n" \
    ".popsection\n" \
    EX_TABLE(0b,3b) EX_TABLE(1b,3b) \
    - : "=d" (__rc), "=Q" (*(to)) \
    + : "=d" (__rc), "+Q" (*(to)) \
    : "d" (size), "Q" (*(from)), \
    "d" (__reg0), "K" (-EFAULT) \
    : "cc"); \

    \
     
     \ /
      Last update: 2017-04-10 18:42    [W:4.363 / U:0.352 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site