CONFIG_ARCH_HAS_RAW_COPY_USER is unconditional now
authorAl Viro <viro@zeniv.linux.org.uk>
Wed, 5 Apr 2017 23:15:53 +0000 (19:15 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Wed, 26 Apr 2017 16:11:01 +0000 (12:11 -0400)
all architectures converted

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
35 files changed:
arch/Kconfig
arch/alpha/Kconfig
arch/arc/Kconfig
arch/arm/Kconfig
arch/arm64/Kconfig
arch/avr32/Kconfig
arch/blackfin/Kconfig
arch/c6x/Kconfig
arch/cris/Kconfig
arch/frv/Kconfig
arch/h8300/Kconfig
arch/hexagon/Kconfig
arch/ia64/Kconfig
arch/m32r/Kconfig
arch/m68k/Kconfig
arch/metag/Kconfig
arch/microblaze/Kconfig
arch/mips/Kconfig
arch/mn10300/Kconfig
arch/nios2/Kconfig
arch/openrisc/Kconfig
arch/parisc/Kconfig
arch/powerpc/Kconfig
arch/s390/Kconfig
arch/score/Kconfig
arch/sh/Kconfig
arch/sparc/Kconfig
arch/tile/Kconfig
arch/um/Kconfig.common
arch/unicore32/Kconfig
arch/x86/Kconfig
arch/xtensa/Kconfig
include/asm-generic/uaccess.h
include/linux/uaccess.h
lib/Makefile

index 315d376..cd211a1 100644 (file)
@@ -847,7 +847,4 @@ config STRICT_MODULE_RWX
 config ARCH_WANT_RELAX_ORDER
        bool
 
-config ARCH_HAS_RAW_COPY_USER
-       bool
-
 source "kernel/gcov/Kconfig"
index 1be5f61..0e49d39 100644 (file)
@@ -26,7 +26,6 @@ config ALPHA
        select ODD_RT_SIGACTION
        select OLD_SIGSUSPEND
        select CPU_NO_EFFICIENT_FFS if !ALPHA_EV67
-       select ARCH_HAS_RAW_COPY_USER
        help
          The Alpha is a 64-bit general-purpose processor designed and
          marketed by the Digital Equipment Corporation of blessed memory,
index 7e213ff..c9f30f4 100644 (file)
@@ -44,7 +44,6 @@ config ARC
        select HAVE_GENERIC_DMA_COHERENT
        select HAVE_KERNEL_GZIP
        select HAVE_KERNEL_LZMA
-       select ARCH_HAS_RAW_COPY_USER
 
 config MIGHT_HAVE_PCI
        bool
index 6fab7f3..0d4e71b 100644 (file)
@@ -96,7 +96,6 @@ config ARM
        select PERF_USE_VMALLOC
        select RTC_LIB
        select SYS_SUPPORTS_APM_EMULATION
-       select ARCH_HAS_RAW_COPY_USER
        # Above selects are sorted alphabetically; please add new ones
        # according to that.  Thanks.
        help
index 3c833ff..3741859 100644 (file)
@@ -115,7 +115,6 @@ config ARM64
        select SPARSE_IRQ
        select SYSCTL_EXCEPTION_TRACE
        select THREAD_INFO_IN_TASK
-       select ARCH_HAS_RAW_COPY_USER
        help
          ARM 64-bit (AArch64) Linux support.
 
index 8c349f2..7e75d45 100644 (file)
@@ -19,7 +19,6 @@ config AVR32
        select HAVE_MOD_ARCH_SPECIFIC
        select MODULES_USE_ELF_RELA
        select HAVE_NMI
-       select ARCH_HAS_RAW_COPY_USER
        help
          AVR32 is a high-performance 32-bit RISC microprocessor core,
          designed for cost-sensitive embedded applications, with particular
index 919dad1..3c1bd64 100644 (file)
@@ -41,7 +41,6 @@ config BLACKFIN
        select MODULES_USE_ELF_RELA
        select HAVE_DEBUG_STACKOVERFLOW
        select HAVE_NMI
-       select ARCH_HAS_RAW_COPY_USER
 
 config GENERIC_CSUM
        def_bool y
index 3c7bd9a..5aa8ea8 100644 (file)
@@ -18,7 +18,6 @@ config C6X
        select GENERIC_CLOCKEVENTS
        select MODULES_USE_ELF_RELA
        select ARCH_NO_COHERENT_DMA_MMAP
-       select ARCH_HAS_RAW_COPY_USER
 
 config MMU
        def_bool n
index 36f94c4..71b758d 100644 (file)
@@ -71,7 +71,6 @@ config CRIS
        select GENERIC_SCHED_CLOCK if ETRAX_ARCH_V32
        select HAVE_DEBUG_BUGVERBOSE if ETRAX_ARCH_V32
        select HAVE_NMI
-       select ARCH_HAS_RAW_COPY_USER
 
 config HZ
        int
index e489fef..eefd9a4 100644 (file)
@@ -16,7 +16,6 @@ config FRV
        select OLD_SIGACTION
        select HAVE_DEBUG_STACKOVERFLOW
        select ARCH_NO_COHERENT_DMA_MMAP
-       select ARCH_HAS_RAW_COPY_USER
 
 config ZONE_DMA
        bool
index 4738834..3ae8525 100644 (file)
@@ -22,7 +22,6 @@ config H8300
        select HAVE_ARCH_KGDB
        select HAVE_ARCH_HASH
        select CPU_NO_EFFICIENT_FFS
-       select ARCH_HAS_RAW_COPY_USER
 
 config RWSEM_GENERIC_SPINLOCK
        def_bool y
index 0c536a8..1941e4b 100644 (file)
@@ -26,7 +26,6 @@ config HEXAGON
        select GENERIC_CLOCKEVENTS_BROADCAST
        select MODULES_USE_ELF_RELA
        select GENERIC_CPU_DEVICES
-       select ARCH_HAS_RAW_COPY_USER
        ---help---
          Qualcomm Hexagon is a processor architecture designed for high
          performance and low power across a wide variety of applications.
index 0ed0e44..18ca6a9 100644 (file)
@@ -53,7 +53,6 @@ config IA64
        select ARCH_USE_CMPXCHG_LOCKREF
        select HAVE_ARCH_AUDITSYSCALL
        select HAVE_ARCH_HARDENED_USERCOPY
-       select ARCH_HAS_RAW_COPY_USER
        default y
        help
          The Itanium Processor Family is Intel's 64-bit successor to
index b3e82bd..9547446 100644 (file)
@@ -19,7 +19,6 @@ config M32R
        select HAVE_DEBUG_STACKOVERFLOW
        select CPU_NO_EFFICIENT_FFS
        select DMA_NOOP_OPS
-       select ARCH_HAS_RAW_COPY_USER
 
 config SBUS
        bool
index 7d34575..d140206 100644 (file)
@@ -22,7 +22,6 @@ config M68K
        select MODULES_USE_ELF_RELA
        select OLD_SIGSUSPEND3
        select OLD_SIGACTION
-       select ARCH_HAS_RAW_COPY_USER
 
 config RWSEM_GENERIC_SPINLOCK
        bool
index ecce0c5..5b7a45d 100644 (file)
@@ -1,6 +1,5 @@
 config METAG
        def_bool y
-       select ARCH_HAS_RAW_COPY_USER
        select EMBEDDED
        select GENERIC_ATOMIC64
        select GENERIC_CLOCKEVENTS
index 1aff365..85885a5 100644 (file)
@@ -34,7 +34,6 @@ config MICROBLAZE
        select TRACING_SUPPORT
        select VIRT_TO_BUS
        select CPU_NO_EFFICIENT_FFS
-       select ARCH_HAS_RAW_COPY_USER
 
 config SWAP
        def_bool n
index aff5633..a008a9f 100644 (file)
@@ -69,7 +69,6 @@ config MIPS
        select HAVE_EXIT_THREAD
        select HAVE_REGS_AND_STACK_ACCESS_API
        select HAVE_ARCH_HARDENED_USERCOPY
-       select ARCH_HAS_RAW_COPY_USER
 
 menu "Machine selection"
 
index a96f3dc..38e3494 100644 (file)
@@ -16,7 +16,6 @@ config MN10300
        select OLD_SIGACTION
        select HAVE_DEBUG_STACKOVERFLOW
        select ARCH_NO_COHERENT_DMA_MMAP
-       select ARCH_HAS_RAW_COPY_USER
 
 config AM33_2
        def_bool n
index 45b4727..51a56c8 100644 (file)
@@ -16,7 +16,6 @@ config NIOS2
        select SPARSE_IRQ
        select USB_ARCH_HAS_HCD if USB_SUPPORT
        select CPU_NO_EFFICIENT_FFS
-       select ARCH_HAS_RAW_COPY_USER
 
 config GENERIC_CSUM
        def_bool y
index 3895418..1e95920 100644 (file)
@@ -28,7 +28,6 @@ config OPENRISC
        select OR1K_PIC
        select CPU_NO_EFFICIENT_FFS if !OPENRISC_HAVE_INST_FF1
        select NO_BOOTMEM
-       select ARCH_HAS_RAW_COPY_USER
 
 config MMU
        def_bool y
index 15b7b27..ad294b3 100644 (file)
@@ -41,7 +41,6 @@ config PARISC
        select GENERIC_CLOCKEVENTS
        select ARCH_NO_COHERENT_DMA_MMAP
        select CPU_NO_EFFICIENT_FFS
-       select ARCH_HAS_RAW_COPY_USER
 
        help
          The PA-RISC microprocessor is designed by Hewlett-Packard and used
index 839f088..97a8bc8 100644 (file)
@@ -87,7 +87,6 @@ config PPC
        select ARCH_HAS_DMA_SET_COHERENT_MASK
        select ARCH_HAS_ELF_RANDOMIZE
        select ARCH_HAS_GCOV_PROFILE_ALL
-       select ARCH_HAS_RAW_COPY_USER
        select ARCH_HAS_SCALED_CPUTIME          if VIRT_CPU_ACCOUNTING_NATIVE
        select ARCH_HAS_SG_CHAIN
        select ARCH_HAS_TICK_BROADCAST          if GENERIC_CLOCKEVENTS_BROADCAST
index 0724dbf..a2dcef0 100644 (file)
@@ -178,7 +178,6 @@ config S390
        select ARCH_HAS_SCALED_CPUTIME
        select VIRT_TO_BUS
        select HAVE_NMI
-       select ARCH_HAS_RAW_COPY_USER
 
 
 config SCHED_OMIT_FRAME_POINTER
index 4d241cf..507d631 100644 (file)
@@ -15,7 +15,6 @@ config SCORE
        select MODULES_USE_ELF_REL
        select CLONE_BACKWARDS
        select CPU_NO_EFFICIENT_FFS
-       select ARCH_HAS_RAW_COPY_USER
 
 choice
        prompt "System type"
index c689645..ee08695 100644 (file)
@@ -48,7 +48,6 @@ config SUPERH
        select HAVE_ARCH_AUDITSYSCALL
        select HAVE_FUTEX_CMPXCHG if FUTEX
        select HAVE_NMI
-       select ARCH_HAS_RAW_COPY_USER
        help
          The SuperH is a RISC processor targeted for use in embedded systems
          and consumer electronics; it was also used in the Sega Dreamcast
index 6835304..68ac5c7 100644 (file)
@@ -45,7 +45,6 @@ config SPARC
        select HAVE_ARCH_HARDENED_USERCOPY
        select PROVE_LOCKING_SMALL if PROVE_LOCKING
        select ARCH_WANT_RELAX_ORDER
-       select ARCH_HAS_RAW_COPY_USER
 
 config SPARC32
        def_bool !64BIT
index 27808d8..4583c03 100644 (file)
@@ -33,7 +33,6 @@ config TILE
        select USER_STACKTRACE_SUPPORT
        select USE_PMC if PERF_EVENTS
        select VIRT_TO_BUS
-       select ARCH_HAS_RAW_COPY_USER
 
 config MMU
        def_bool y
index e13f763..fd44385 100644 (file)
@@ -13,7 +13,6 @@ config UML
        select GENERIC_CLOCKEVENTS
        select HAVE_GCC_PLUGINS
        select TTY # Needed for line.c
-       select ARCH_HAS_RAW_COPY_USER
 
 config MMU
        bool
index 319519e..0769066 100644 (file)
@@ -18,7 +18,6 @@ config UNICORE32
        select ARCH_WANT_FRAME_POINTERS
        select GENERIC_IOMAP
        select MODULES_USE_ELF_REL
-       select ARCH_HAS_RAW_COPY_USER
        help
          UniCore-32 is 32-bit Instruction Set Architecture,
          including a series of low-power-consumption RISC chip
index 5f59fc3..cc98d5a 100644 (file)
@@ -175,7 +175,6 @@ config X86
        select USER_STACKTRACE_SUPPORT
        select VIRT_TO_BUS
        select X86_FEATURE_NAMES                if PROC_FS
-       select ARCH_HAS_RAW_COPY_USER
 
 config INSTRUCTION_DECODER
        def_bool y
index 043d37d..f4126cf 100644 (file)
@@ -29,7 +29,6 @@ config XTENSA
        select NO_BOOTMEM
        select PERF_USE_VMALLOC
        select VIRT_TO_BUS
-       select ARCH_HAS_RAW_COPY_USER
        help
          Xtensa processors are 32-bit RISC machines designed by Tensilica
          primarily for embedded systems.  These processors are both
index d65c311..bbe4bb4 100644 (file)
@@ -86,11 +86,7 @@ static inline int __access_ok(unsigned long addr, unsigned long size)
 
 static inline int __put_user_fn(size_t size, void __user *ptr, void *x)
 {
-#ifdef CONFIG_ARCH_HAS_RAW_COPY_USER
        return unlikely(raw_copy_to_user(ptr, x, size)) ? -EFAULT : 0;
-#else
-       return unlikely(__copy_to_user(ptr, x, size)) ? -EFAULT : 0;
-#endif
 }
 
 #define __put_user_fn(sz, u, k)        __put_user_fn(sz, u, k)
@@ -151,11 +147,7 @@ extern int __put_user_bad(void) __attribute__((noreturn));
 #ifndef __get_user_fn
 static inline int __get_user_fn(size_t size, const void __user *ptr, void *x)
 {
-#ifdef CONFIG_ARCH_HAS_RAW_COPY_USER
        return unlikely(raw_copy_from_user(x, ptr, size)) ? -EFAULT : 0;
-#else
-       return unlikely(__copy_from_user(x, ptr, size)) ? -EFAULT : 0;
-#endif
 }
 
 #define __get_user_fn(sz, u, k)        __get_user_fn(sz, u, k)
@@ -164,39 +156,6 @@ static inline int __get_user_fn(size_t size, const void __user *ptr, void *x)
 
 extern int __get_user_bad(void) __attribute__((noreturn));
 
-#ifndef CONFIG_ARCH_HAS_RAW_COPY_USER
-
-#ifndef __copy_from_user_inatomic
-#define __copy_from_user_inatomic __copy_from_user
-#endif
-
-#ifndef __copy_to_user_inatomic
-#define __copy_to_user_inatomic __copy_to_user
-#endif
-
-static inline long copy_from_user(void *to,
-               const void __user * from, unsigned long n)
-{
-       unsigned long res = n;
-       might_fault();
-       if (likely(access_ok(VERIFY_READ, from, n)))
-               res = __copy_from_user(to, from, n);
-       if (unlikely(res))
-               memset(to + (n - res), 0, res);
-       return res;
-}
-
-static inline long copy_to_user(void __user *to,
-               const void *from, unsigned long n)
-{
-       might_fault();
-       if (access_ok(VERIFY_WRITE, to, n))
-               return __copy_to_user(to, from, n);
-       else
-               return n;
-}
-#endif
-
 /*
  * Copy a null terminated string from userspace.
  */
index 7fc2104..e0cbfb0 100644 (file)
 
 #include <asm/uaccess.h>
 
-#ifdef CONFIG_ARCH_HAS_RAW_COPY_USER
 /*
  * Architectures should provide two primitives (raw_copy_{to,from}_user())
- * select ARCH_HAS_RAW_COPY_FROM_USER and get rid of their private instances
- * of copy_{to,from}_user() and __copy_{to,from}_user{,_inatomic}().  Once
- * all of them switch, this part of linux/uaccess.h will become unconditional.
+ * and get rid of their private instances of copy_{to,from}_user() and
+ * __copy_{to,from}_user{,_inatomic}().
  *
  * raw_copy_{to,from}_user(to, from, size) should copy up to size bytes and
  * return the amount left to copy.  They should assume that access_ok() has
@@ -196,7 +194,6 @@ copy_in_user(void __user *to, const void *from, unsigned long n)
        return n;
 }
 #endif
-#endif
 
 static __always_inline void pagefault_disabled_inc(void)
 {
index 7d875c3..b47cf97 100644 (file)
@@ -41,7 +41,7 @@ obj-y += bcd.o div64.o sort.o parser.o debug_locks.o random32.o \
         gcd.o lcm.o list_sort.o uuid.o flex_array.o iov_iter.o clz_ctz.o \
         bsearch.o find_bit.o llist.o memweight.o kfifo.o \
         percpu-refcount.o percpu_ida.o rhashtable.o reciprocal_div.o \
-        once.o refcount.o
+        once.o refcount.o usercopy.o
 obj-y += string_helpers.o
 obj-$(CONFIG_TEST_STRING_HELPERS) += test-string_helpers.o
 obj-y += hexdump.o
@@ -242,5 +242,3 @@ UBSAN_SANITIZE_ubsan.o := n
 obj-$(CONFIG_SBITMAP) += sbitmap.o
 
 obj-$(CONFIG_PARMAN) += parman.o
-
-obj-$(CONFIG_ARCH_HAS_RAW_COPY_USER) += usercopy.o