lkml.org 
[lkml]   [2016]   [Nov]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.8 47/49] sparc64: Delete now unused user copy fixup functions.
    Date
    4.8-stable review patch.  If anyone has any objections, please let me know.

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

    From: "David S. Miller" <davem@davemloft.net>


    [ Upstream commit 0fd0ff01d4c3c01e7fe69b762ee1a13236639acc ]

    Now that all of the user copy routines are converted to return
    accurate residual lengths when an exception occurs, we no longer need
    the broken fixup routines.

    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/sparc/include/asm/uaccess_64.h | 36 +-----------------
    arch/sparc/lib/Makefile | 2 -
    arch/sparc/lib/user_fixup.c | 71 ------------------------------------
    3 files changed, 4 insertions(+), 105 deletions(-)
    delete mode 100644 arch/sparc/lib/user_fixup.c

    --- a/arch/sparc/include/asm/uaccess_64.h
    +++ b/arch/sparc/include/asm/uaccess_64.h
    @@ -204,64 +204,34 @@ int __get_user_bad(void);
    unsigned long __must_check ___copy_from_user(void *to,
    const void __user *from,
    unsigned long size);
    -unsigned long copy_from_user_fixup(void *to, const void __user *from,
    - unsigned long size);
    static inline unsigned long __must_check
    copy_from_user(void *to, const void __user *from, unsigned long size)
    {
    - unsigned long ret;
    -
    check_object_size(to, size, false);

    - ret = ___copy_from_user(to, from, size);
    - if (unlikely(ret)) {
    - if ((long)ret < 0)
    - ret = copy_from_user_fixup(to, from, size);
    - return ret;
    - }
    -
    - return ret;
    + return ___copy_from_user(to, from, size);
    }
    #define __copy_from_user copy_from_user

    unsigned long __must_check ___copy_to_user(void __user *to,
    const void *from,
    unsigned long size);
    -unsigned long copy_to_user_fixup(void __user *to, const void *from,
    - unsigned long size);
    static inline unsigned long __must_check
    copy_to_user(void __user *to, const void *from, unsigned long size)
    {
    - unsigned long ret;
    -
    check_object_size(from, size, true);

    - ret = ___copy_to_user(to, from, size);
    - if (unlikely(ret)) {
    - if ((long)ret < 0)
    - ret = copy_to_user_fixup(to, from, size);
    - return ret;
    - }
    - return ret;
    + return ___copy_to_user(to, from, size);
    }
    #define __copy_to_user copy_to_user

    unsigned long __must_check ___copy_in_user(void __user *to,
    const void __user *from,
    unsigned long size);
    -unsigned long copy_in_user_fixup(void __user *to, void __user *from,
    - unsigned long size);
    static inline unsigned long __must_check
    copy_in_user(void __user *to, void __user *from, unsigned long size)
    {
    - unsigned long ret = ___copy_in_user(to, from, size);
    -
    - if (unlikely(ret)) {
    - if ((long)ret < 0)
    - ret = copy_in_user_fixup(to, from, size);
    - return ret;
    - }
    - return ret;
    + return ___copy_in_user(to, from, size);
    }
    #define __copy_in_user copy_in_user

    --- a/arch/sparc/lib/Makefile
    +++ b/arch/sparc/lib/Makefile
    @@ -38,7 +38,7 @@ lib-$(CONFIG_SPARC64) += NG4patch.o NG4
    lib-$(CONFIG_SPARC64) += GENmemcpy.o GENcopy_from_user.o GENcopy_to_user.o
    lib-$(CONFIG_SPARC64) += GENpatch.o GENpage.o GENbzero.o

    -lib-$(CONFIG_SPARC64) += copy_in_user.o user_fixup.o memmove.o
    +lib-$(CONFIG_SPARC64) += copy_in_user.o memmove.o
    lib-$(CONFIG_SPARC64) += mcount.o ipcsum.o xor.o hweight.o ffs.o

    obj-$(CONFIG_SPARC64) += iomap.o
    --- a/arch/sparc/lib/user_fixup.c
    +++ /dev/null
    @@ -1,71 +0,0 @@
    -/* user_fixup.c: Fix up user copy faults.
    - *
    - * Copyright (C) 2004 David S. Miller <davem@redhat.com>
    - */
    -
    -#include <linux/compiler.h>
    -#include <linux/kernel.h>
    -#include <linux/string.h>
    -#include <linux/errno.h>
    -#include <linux/module.h>
    -
    -#include <asm/uaccess.h>
    -
    -/* Calculating the exact fault address when using
    - * block loads and stores can be very complicated.
    - *
    - * Instead of trying to be clever and handling all
    - * of the cases, just fix things up simply here.
    - */
    -
    -static unsigned long compute_size(unsigned long start, unsigned long size, unsigned long *offset)
    -{
    - unsigned long fault_addr = current_thread_info()->fault_address;
    - unsigned long end = start + size;
    -
    - if (fault_addr < start || fault_addr >= end) {
    - *offset = 0;
    - } else {
    - *offset = fault_addr - start;
    - size = end - fault_addr;
    - }
    - return size;
    -}
    -
    -unsigned long copy_from_user_fixup(void *to, const void __user *from, unsigned long size)
    -{
    - unsigned long offset;
    -
    - size = compute_size((unsigned long) from, size, &offset);
    - if (likely(size))
    - memset(to + offset, 0, size);
    -
    - return size;
    -}
    -EXPORT_SYMBOL(copy_from_user_fixup);
    -
    -unsigned long copy_to_user_fixup(void __user *to, const void *from, unsigned long size)
    -{
    - unsigned long offset;
    -
    - return compute_size((unsigned long) to, size, &offset);
    -}
    -EXPORT_SYMBOL(copy_to_user_fixup);
    -
    -unsigned long copy_in_user_fixup(void __user *to, void __user *from, unsigned long size)
    -{
    - unsigned long fault_addr = current_thread_info()->fault_address;
    - unsigned long start = (unsigned long) to;
    - unsigned long end = start + size;
    -
    - if (fault_addr >= start && fault_addr < end)
    - return end - fault_addr;
    -
    - start = (unsigned long) from;
    - end = start + size;
    - if (fault_addr >= start && fault_addr < end)
    - return end - fault_addr;
    -
    - return size;
    -}
    -EXPORT_SYMBOL(copy_in_user_fixup);

    \
     
     \ /
      Last update: 2016-11-19 10:28    [W:3.636 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site