]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
asm-generic: reverse GENERIC_{STRNCPY_FROM,STRNLEN}_USER symbols
authorArnd Bergmann <arnd@arndb.de>
Mon, 17 May 2021 07:22:34 +0000 (09:22 +0200)
committerArnd Bergmann <arnd@arndb.de>
Fri, 30 Jul 2021 08:30:21 +0000 (10:30 +0200)
Most architectures do not need a custom implementation, and in most
cases the generic implementation is preferred, so change the polariy
on these Kconfig symbols to require architectures to select them when
they provide their own version.

The new name is CONFIG_ARCH_HAS_{STRNCPY_FROM,STRNLEN}_USER.

The remaining architectures at the moment are: ia64, mips, parisc,
um and xtensa. We should probably convert these as well, but
I was not sure how far to take this series. Thomas Bogendoerfer
had some concerns about converting mips but may still do some
more detailed measurements to see which version is better.

Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
Cc: Anton Ivanov <anton.ivanov@cambridgegreys.com>
Cc: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Helge Deller <deller@gmx.de>
Cc: Jeff Dike <jdike@addtoit.com>
Cc: Max Filippov <jcmvbkbc@gmail.com>
Cc: Richard Weinberger <richard@nod.at>
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Cc: linux-ia64@vger.kernel.org
Cc: linux-mips@vger.kernel.org
Cc: linux-parisc@vger.kernel.org
Cc: linux-s390@vger.kernel.org
Cc: linux-um@lists.infradead.org
Cc: linux-xtensa@linux-xtensa.org
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Helge Deller <deller@gmx.de> # parisc
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
26 files changed:
arch/alpha/Kconfig
arch/arc/Kconfig
arch/arm/Kconfig
arch/arm64/Kconfig
arch/csky/Kconfig
arch/h8300/Kconfig
arch/hexagon/Kconfig
arch/ia64/Kconfig
arch/m68k/Kconfig
arch/microblaze/Kconfig
arch/mips/Kconfig
arch/nds32/Kconfig
arch/nios2/Kconfig
arch/openrisc/Kconfig
arch/parisc/Kconfig
arch/powerpc/Kconfig
arch/riscv/Kconfig
arch/s390/Kconfig
arch/sh/Kconfig
arch/sparc/Kconfig
arch/um/Kconfig
arch/x86/Kconfig
arch/xtensa/Kconfig
arch/xtensa/include/asm/uaccess.h
arch/xtensa/kernel/xtensa_ksyms.c
lib/Kconfig

index 77d3280dc6781eab5fe34ed7b32ac2a4f311ff23..62935da8e69ebd7c664dcddf9a06f6f9303493fc 100644 (file)
@@ -29,8 +29,6 @@ config ALPHA
        select AUDIT_ARCH
        select GENERIC_CPU_VULNERABILITIES
        select GENERIC_SMP_IDLE_THREAD
-       select GENERIC_STRNCPY_FROM_USER
-       select GENERIC_STRNLEN_USER
        select HAVE_ARCH_AUDITSYSCALL
        select HAVE_MOD_ARCH_SPECIFIC
        select MODULES_USE_ELF_RELA
index 64e5f9366401e441265ece1c019642ca464d6b16..d8f51eb8963bb13ae53b609903d51bb0e0cf9f83 100644 (file)
@@ -27,8 +27,6 @@ config ARC
        select GENERIC_PENDING_IRQ if SMP
        select GENERIC_SCHED_CLOCK
        select GENERIC_SMP_IDLE_THREAD
-       select GENERIC_STRNCPY_FROM_USER
-       select GENERIC_STRNLEN_USER
        select HAVE_ARCH_KGDB
        select HAVE_ARCH_TRACEHOOK
        select HAVE_ARCH_TRANSPARENT_HUGEPAGE if ARC_MMU_V4
index 82f908fa5676ac15069f3eff22e3b227d60bdc9f..e8ebbb9ededf01b2f10beba9bc4c2bfadc1079c4 100644 (file)
@@ -63,8 +63,6 @@ config ARM
        select GENERIC_PCI_IOMAP
        select GENERIC_SCHED_CLOCK
        select GENERIC_SMP_IDLE_THREAD
-       select GENERIC_STRNCPY_FROM_USER
-       select GENERIC_STRNLEN_USER
        select HANDLE_DOMAIN_IRQ
        select HARDIRQS_SW_RESEND
        select HAVE_ARCH_AUDITSYSCALL if AEABI && !OABI_COMPAT
index b5b13a932561fc0bbf2fda570aa8b1dfa1d57b3a..e0c6c14a21d03fe2918f8553e4eae876848a235c 100644 (file)
@@ -130,8 +130,6 @@ config ARM64
        select GENERIC_PTDUMP
        select GENERIC_SCHED_CLOCK
        select GENERIC_SMP_IDLE_THREAD
-       select GENERIC_STRNCPY_FROM_USER
-       select GENERIC_STRNLEN_USER
        select GENERIC_TIME_VSYSCALL
        select GENERIC_GETTIMEOFDAY
        select GENERIC_VDSO_TIME_NS
index 5043e221ced484989f9cbbbcf5b905ae45a68cf8..2716f6395ba708c9cb350101d9de0523d1e76532 100644 (file)
@@ -35,8 +35,6 @@ config CSKY
        select GENERIC_IRQ_MULTI_HANDLER
        select GENERIC_SCHED_CLOCK
        select GENERIC_SMP_IDLE_THREAD
-       select GENERIC_STRNCPY_FROM_USER
-       select GENERIC_STRNLEN_USER
        select GENERIC_TIME_VSYSCALL
        select GENERIC_VDSO_32
        select GENERIC_GETTIMEOFDAY
index 53dfd2d47e0e87178b9fb9abdd19fd02dc744c30..3e3e0f16f7e0af5ac78056e9a172ddfa97c0ccd3 100644 (file)
@@ -11,8 +11,6 @@ config H8300
        select GENERIC_IRQ_SHOW
        select FRAME_POINTER
        select GENERIC_CPU_DEVICES
-       select GENERIC_STRNCPY_FROM_USER
-       select GENERIC_STRNLEN_USER
        select MODULES_USE_ELF_RELA
        select COMMON_CLK
        select ARCH_WANT_FRAME_POINTERS
index 3bf4845fed4bb5dbff53463ae9a1d2173458d2be..e5a852080730fb1804fcdd4b498e3052bdaeef76 100644 (file)
@@ -19,8 +19,6 @@ config HEXAGON
        # GENERIC_ALLOCATOR is used by dma_alloc_coherent()
        select GENERIC_ALLOCATOR
        select GENERIC_IRQ_SHOW
-       select GENERIC_STRNCPY_FROM_USER
-       select GENERIC_STRNLEN_USER
        select HAVE_ARCH_KGDB
        select HAVE_ARCH_TRACEHOOK
        select NEED_SG_DMA_LENGTH
index cf425c2c63af6cbda37c920891379fe3aede9850..7aa5b94464c634c8c3116f10c48fca87d2b176a7 100644 (file)
@@ -9,6 +9,8 @@ menu "Processor type and features"
 config IA64
        bool
        select ARCH_HAS_DMA_MARK_CLEAN
+       select ARCH_HAS_STRNCPY_FROM_USER
+       select ARCH_HAS_STRNLEN_USER
        select ARCH_MIGHT_HAVE_PC_PARPORT
        select ARCH_MIGHT_HAVE_PC_SERIO
        select ACPI
index 37a65bed6dfaefd9fd9fb0db5f1da9a7319f8559..7970d316dc9bdf1161db765d443111abaf97b953 100644 (file)
@@ -16,8 +16,6 @@ config M68K
        select GENERIC_CPU_DEVICES
        select GENERIC_IOMAP
        select GENERIC_IRQ_SHOW
-       select GENERIC_STRNCPY_FROM_USER
-       select GENERIC_STRNLEN_USER
        select HAVE_AOUT if MMU
        select HAVE_ASM_MODVERSIONS
        select HAVE_DEBUG_BUGVERBOSE
index 10dfa7b4feff2cadd06525f936b84c922fa1ac6e..14a67a42fcae8862aaeff8a2c9f7d6e4826dde53 100644 (file)
@@ -21,8 +21,6 @@ config MICROBLAZE
        select GENERIC_IRQ_SHOW
        select GENERIC_PCI_IOMAP
        select GENERIC_SCHED_CLOCK
-       select GENERIC_STRNCPY_FROM_USER
-       select GENERIC_STRNLEN_USER
        select HAVE_ARCH_HASH
        select HAVE_ARCH_KGDB
        select HAVE_ARCH_SECCOMP
index cee6087cd686bde1e9d7c39de27dc07aa781d183..3fa6840fca434b47d4c604433efb82d1ab3f6524 100644 (file)
@@ -9,6 +9,8 @@ config MIPS
        select ARCH_HAS_KCOV
        select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE if !EVA
        select ARCH_HAS_PTE_SPECIAL if !(32BIT && CPU_HAS_RIXI)
+       select ARCH_HAS_STRNCPY_FROM_USER
+       select ARCH_HAS_STRNLEN_USER
        select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
        select ARCH_HAS_UBSAN_SANITIZE_ALL
        select ARCH_HAS_GCOV_PROFILE_ALL
index 62313902d75d9e80a8f5c69959b12993b878e9a0..9c9f3877abf9783efe43b07be24119249124d4fe 100644 (file)
@@ -26,8 +26,6 @@ config NDS32
        select GENERIC_LIB_LSHRDI3
        select GENERIC_LIB_MULDI3
        select GENERIC_LIB_UCMPDI2
-       select GENERIC_STRNCPY_FROM_USER
-       select GENERIC_STRNLEN_USER
        select GENERIC_TIME_VSYSCALL
        select HANDLE_DOMAIN_IRQ
        select HAVE_ARCH_TRACEHOOK
index c24955c81c9274e8293bea3006e1a66a2cde3816..3efe5533ea1c0eefaea209769f083580f1286e95 100644 (file)
@@ -13,8 +13,6 @@ config NIOS2
        select GENERIC_CPU_DEVICES
        select GENERIC_IRQ_PROBE
        select GENERIC_IRQ_SHOW
-       select GENERIC_STRNCPY_FROM_USER
-       select GENERIC_STRNLEN_USER
        select HAVE_ARCH_TRACEHOOK
        select HAVE_ARCH_KGDB
        select IRQ_DOMAIN
index 591acc5990dc598c785bc01800cb3902f2d70de5..50035a9816c8a9c0969aae140740c73e1f2a373d 100644 (file)
@@ -25,8 +25,6 @@ config OPENRISC
        select HAVE_UID16
        select GENERIC_ATOMIC64
        select GENERIC_CLOCKEVENTS_BROADCAST
-       select GENERIC_STRNCPY_FROM_USER
-       select GENERIC_STRNLEN_USER
        select GENERIC_SMP_IDLE_THREAD
        select MODULES_USE_ELF_RELA
        select HAVE_DEBUG_STACKOVERFLOW
index bde9907bc5b25f91851266b6be92832937cb3f94..727c823f866e485a878b3d13d53e19d25d6a15e4 100644 (file)
@@ -11,6 +11,7 @@ config PARISC
        select ARCH_HAS_ELF_RANDOMIZE
        select ARCH_HAS_STRICT_KERNEL_RWX
        select ARCH_HAS_UBSAN_SANITIZE_ALL
+       select ARCH_HAS_STRNLEN_USER
        select ARCH_NO_SG_CHAIN
        select ARCH_SUPPORTS_HUGETLBFS if PA20
        select ARCH_SUPPORTS_MEMORY_FAILURE
@@ -34,7 +35,6 @@ config PARISC
        select ARCH_HAVE_NMI_SAFE_CMPXCHG
        select GENERIC_SMP_IDLE_THREAD
        select GENERIC_CPU_DEVICES
-       select GENERIC_STRNCPY_FROM_USER
        select GENERIC_LIB_DEVMEM_IS_ALLOWED
        select SYSCTL_ARCH_UNALIGN_ALLOW
        select SYSCTL_EXCEPTION_TRACE
index d01e3401581d63f5a842150d8bb3cc434bd94971..d2df3d2db3eb96cccc456d7aa3187d86fe8bfb33 100644 (file)
@@ -183,8 +183,6 @@ config PPC
        select GENERIC_IRQ_SHOW_LEVEL
        select GENERIC_PCI_IOMAP                if PCI
        select GENERIC_SMP_IDLE_THREAD
-       select GENERIC_STRNCPY_FROM_USER
-       select GENERIC_STRNLEN_USER
        select GENERIC_TIME_VSYSCALL
        select GENERIC_VDSO_TIME_NS
        select HAVE_ARCH_AUDITSYSCALL
index 47bbbcab91b29dfeece67ccc54aa2fc1df20a816..49d642df6ab9e3e48b4eb5865f345124b6dc5a3f 100644 (file)
@@ -56,8 +56,6 @@ config RISCV
        select GENERIC_PTDUMP if MMU
        select GENERIC_SCHED_CLOCK
        select GENERIC_SMP_IDLE_THREAD
-       select GENERIC_STRNCPY_FROM_USER
-       select GENERIC_STRNLEN_USER
        select GENERIC_TIME_VSYSCALL if MMU && 64BIT
        select HANDLE_DOMAIN_IRQ
        select HAVE_ARCH_AUDITSYSCALL
index e3988b538a0c71d5ed0d19511dd8687e9beb6b94..a0e2130f0100ca4ad8420d6cfbc826d724716517 100644 (file)
@@ -130,8 +130,6 @@ config S390
        select GENERIC_GETTIMEOFDAY
        select GENERIC_PTDUMP
        select GENERIC_SMP_IDLE_THREAD
-       select GENERIC_STRNCPY_FROM_USER
-       select GENERIC_STRNLEN_USER
        select GENERIC_TIME_VSYSCALL
        select GENERIC_VDSO_TIME_NS
        select HAVE_ALIGNED_STRUCT_PAGE if SLUB
index 45a0549421cd0b4197fa328c04b72174690416dc..5d20509e55564b151a9465700a0ac0f7f7479be1 100644 (file)
@@ -22,8 +22,6 @@ config SUPERH
        select GENERIC_IRQ_SHOW
        select GENERIC_PCI_IOMAP if PCI
        select GENERIC_SCHED_CLOCK
-       select GENERIC_STRNCPY_FROM_USER
-       select GENERIC_STRNLEN_USER
        select GENERIC_SMP_IDLE_THREAD
        select GUP_GET_PTE_LOW_HIGH if X2TLB
        select HAVE_ARCH_AUDITSYSCALL
index c5fa7932b550b69d0476fda8e000d8c8a1caeaa6..9f78822562eb9f013864e2476dba12975286b56c 100644 (file)
@@ -38,8 +38,6 @@ config SPARC
        select HAVE_EBPF_JIT if SPARC64
        select HAVE_DEBUG_BUGVERBOSE
        select GENERIC_SMP_IDLE_THREAD
-       select GENERIC_STRNCPY_FROM_USER
-       select GENERIC_STRNLEN_USER
        select MODULES_USE_ELF_RELA
        select PCI_SYSCALL if PCI
        select PCI_MSI_ARCH_FALLBACKS if PCI_MSI
index 0561b73cfd9add48e0d3c6eb0f07b9522a1bf23d..77e66d3719f60bd332fa38ef93ce46f919998065 100644 (file)
@@ -7,6 +7,8 @@ config UML
        default y
        select ARCH_EPHEMERAL_INODES
        select ARCH_HAS_KCOV
+       select ARCH_HAS_STRNCPY_FROM_USER
+       select ARCH_HAS_STRNLEN_USER
        select ARCH_NO_PREEMPT
        select HAVE_ARCH_AUDITSYSCALL
        select HAVE_ARCH_SECCOMP_FILTER
index 49270655e827eed14862c995ab987c2aab61f8e7..5509c828bc9357f27c3a19cc59191bb4e996e675 100644 (file)
@@ -144,8 +144,6 @@ config X86
        select GENERIC_PENDING_IRQ              if SMP
        select GENERIC_PTDUMP
        select GENERIC_SMP_IDLE_THREAD
-       select GENERIC_STRNCPY_FROM_USER
-       select GENERIC_STRNLEN_USER
        select GENERIC_TIME_VSYSCALL
        select GENERIC_GETTIMEOFDAY
        select GENERIC_VDSO_TIME_NS
index 2332b21569938cee49c4681a8e37ae2188d10908..282fc195680e287568866d13c83fdd3e986b30fe 100644 (file)
@@ -7,6 +7,8 @@ config XTENSA
        select ARCH_HAS_SYNC_DMA_FOR_CPU if MMU
        select ARCH_HAS_SYNC_DMA_FOR_DEVICE if MMU
        select ARCH_HAS_DMA_SET_UNCACHED if MMU
+       select ARCH_HAS_STRNCPY_FROM_USER if !KASAN
+       select ARCH_HAS_STRNLEN_USER
        select ARCH_USE_MEMTEST
        select ARCH_USE_QUEUED_RWLOCKS
        select ARCH_USE_QUEUED_SPINLOCKS
@@ -20,7 +22,6 @@ config XTENSA
        select GENERIC_IRQ_SHOW
        select GENERIC_PCI_IOMAP
        select GENERIC_SCHED_CLOCK
-       select GENERIC_STRNCPY_FROM_USER if KASAN
        select HAVE_ARCH_AUDITSYSCALL
        select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
        select HAVE_ARCH_KASAN if MMU && !XIP_KERNEL
index 5c9fb8005aa89827b9782433a88577e45cc32dd4..75bd8fbf52ba916d1a7db0567efa98ec7a3b5874 100644 (file)
@@ -290,8 +290,7 @@ clear_user(void __user *addr, unsigned long size)
 #define __clear_user  __xtensa_clear_user
 
 
-#ifndef CONFIG_GENERIC_STRNCPY_FROM_USER
-
+#ifdef CONFIG_ARCH_HAS_STRNCPY_FROM_USER
 extern long __strncpy_user(char *dst, const char __user *src, long count);
 
 static inline long
index 415fe7faa37f01a8b1e0fccc8d1ac460acc0d202..d79edbb98d2a04bd05d0eb6ffb30f4e3e74c27d4 100644 (file)
@@ -43,7 +43,7 @@ EXPORT_SYMBOL(memmove);
 EXPORT_SYMBOL(__memset);
 EXPORT_SYMBOL(__memcpy);
 EXPORT_SYMBOL(__memmove);
-#ifndef CONFIG_GENERIC_STRNCPY_FROM_USER
+#ifdef CONFIG_ARCH_HAS_STRNCPY_FROM_USER
 EXPORT_SYMBOL(__strncpy_user);
 #endif
 EXPORT_SYMBOL(clear_page);
index d241fe476fdacaa9b8936150f89472775d5ef092..0e66c9fa636b07b51d7d24489f69801c3e777d35 100644 (file)
@@ -50,12 +50,18 @@ config HAVE_ARCH_BITREVERSE
          This option enables the use of hardware bit-reversal instructions on
          architectures which support such operations.
 
-config GENERIC_STRNCPY_FROM_USER
+config ARCH_HAS_STRNCPY_FROM_USER
        bool
 
-config GENERIC_STRNLEN_USER
+config ARCH_HAS_STRNLEN_USER
        bool
 
+config GENERIC_STRNCPY_FROM_USER
+       def_bool !ARCH_HAS_STRNCPY_FROM_USER
+
+config GENERIC_STRNLEN_USER
+       def_bool !ARCH_HAS_STRNLEN_USER
+
 config GENERIC_NET_UTILS
        bool