lkml.org 
[lkml]   [2023]   [Sep]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v6 02/13] iov_iter: Be consistent about the __user tag on copy_mc_to_user()
    Date
    copy_mc_to_user() has the destination marked __user on powerpc, but not on
    x86; the latter results in a sparse warning in lib/iov_iter.c.

    Fix this by applying the tag on x86 too.

    Fixes: ec6347bb4339 ("x86, powerpc: Rename memcpy_mcsafe() to copy_mc_to_{user, kernel}()")
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: Dan Williams <dan.j.williams@intel.com>
    cc: Alexander Viro <viro@zeniv.linux.org.uk>
    cc: Jens Axboe <axboe@kernel.dk>
    cc: Christoph Hellwig <hch@lst.de>
    cc: Christian Brauner <christian@brauner.io>
    cc: Matthew Wilcox <willy@infradead.org>
    cc: Linus Torvalds <torvalds@linux-foundation.org>
    cc: David Laight <David.Laight@ACULAB.COM>
    cc: linux-block@vger.kernel.org
    cc: linux-fsdevel@vger.kernel.org
    cc: linux-mm@kvack.org
    ---
    arch/x86/include/asm/uaccess.h | 2 +-
    arch/x86/lib/copy_mc.c | 8 ++++----
    2 files changed, 5 insertions(+), 5 deletions(-)

    diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
    index 8bae40a66282..5c367c1290c3 100644
    --- a/arch/x86/include/asm/uaccess.h
    +++ b/arch/x86/include/asm/uaccess.h
    @@ -496,7 +496,7 @@ copy_mc_to_kernel(void *to, const void *from, unsigned len);
    #define copy_mc_to_kernel copy_mc_to_kernel

    unsigned long __must_check
    -copy_mc_to_user(void *to, const void *from, unsigned len);
    +copy_mc_to_user(void __user *to, const void *from, unsigned len);
    #endif

    /*
    diff --git a/arch/x86/lib/copy_mc.c b/arch/x86/lib/copy_mc.c
    index 80efd45a7761..6e8b7e600def 100644
    --- a/arch/x86/lib/copy_mc.c
    +++ b/arch/x86/lib/copy_mc.c
    @@ -70,23 +70,23 @@ unsigned long __must_check copy_mc_to_kernel(void *dst, const void *src, unsigne
    }
    EXPORT_SYMBOL_GPL(copy_mc_to_kernel);

    -unsigned long __must_check copy_mc_to_user(void *dst, const void *src, unsigned len)
    +unsigned long __must_check copy_mc_to_user(void __user *dst, const void *src, unsigned len)
    {
    unsigned long ret;

    if (copy_mc_fragile_enabled) {
    __uaccess_begin();
    - ret = copy_mc_fragile(dst, src, len);
    + ret = copy_mc_fragile((__force void *)dst, src, len);
    __uaccess_end();
    return ret;
    }

    if (static_cpu_has(X86_FEATURE_ERMS)) {
    __uaccess_begin();
    - ret = copy_mc_enhanced_fast_string(dst, src, len);
    + ret = copy_mc_enhanced_fast_string((__force void *)dst, src, len);
    __uaccess_end();
    return ret;
    }

    - return copy_user_generic(dst, src, len);
    + return copy_user_generic((__force void *)dst, src, len);
    }
    \
     
     \ /
      Last update: 2023-09-22 16:30    [W:3.491 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site