Commit 1260dea6 authored by Helge Deller's avatar Helge Deller

parisc: Drop strnlen_user() in favour of generic version

As suggested by Arnd Bergmann, drop the parisc version of
strnlen_user() and switch to the generic version.
Suggested-by: default avatarArnd Bergmann <arnd@kernel.org>
Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarHelge Deller <deller@gmx.de>
parent 3da6379a
...@@ -10,7 +10,6 @@ config PARISC ...@@ -10,7 +10,6 @@ config PARISC
select ARCH_HAS_ELF_RANDOMIZE select ARCH_HAS_ELF_RANDOMIZE
select ARCH_HAS_STRICT_KERNEL_RWX select ARCH_HAS_STRICT_KERNEL_RWX
select ARCH_HAS_UBSAN_SANITIZE_ALL select ARCH_HAS_UBSAN_SANITIZE_ALL
select ARCH_HAS_STRNLEN_USER
select ARCH_NO_SG_CHAIN select ARCH_NO_SG_CHAIN
select ARCH_SUPPORTS_HUGETLBFS if PA20 select ARCH_SUPPORTS_HUGETLBFS if PA20
select ARCH_SUPPORTS_MEMORY_FAILURE select ARCH_SUPPORTS_MEMORY_FAILURE
......
...@@ -201,13 +201,12 @@ struct exception_table_entry { ...@@ -201,13 +201,12 @@ struct exception_table_entry {
extern long strncpy_from_user(char *, const char __user *, long); extern long strncpy_from_user(char *, const char __user *, long);
extern unsigned lclear_user(void __user *, unsigned long); extern unsigned lclear_user(void __user *, unsigned long);
extern long lstrnlen_user(const char __user *, long); extern __must_check long strnlen_user(const char __user *src, long n);
/* /*
* Complex access routines -- macros * Complex access routines -- macros
*/ */
#define user_addr_max() (~0UL) #define user_addr_max() (~0UL)
#define strnlen_user lstrnlen_user
#define clear_user lclear_user #define clear_user lclear_user
#define __clear_user lclear_user #define __clear_user lclear_user
......
...@@ -32,7 +32,6 @@ EXPORT_SYMBOL(__xchg64); ...@@ -32,7 +32,6 @@ EXPORT_SYMBOL(__xchg64);
#include <linux/uaccess.h> #include <linux/uaccess.h>
EXPORT_SYMBOL(lclear_user); EXPORT_SYMBOL(lclear_user);
EXPORT_SYMBOL(lstrnlen_user);
#ifndef CONFIG_64BIT #ifndef CONFIG_64BIT
/* Needed so insmod can set dp value */ /* Needed so insmod can set dp value */
......
...@@ -67,40 +67,6 @@ $lclu_done: ...@@ -67,40 +67,6 @@ $lclu_done:
ENDPROC_CFI(lclear_user) ENDPROC_CFI(lclear_user)
/*
* long lstrnlen_user(char *s, long n)
*
* Returns 0 if exception before zero byte or reaching N,
* N+1 if N would be exceeded,
* else strlen + 1 (i.e. includes zero byte).
*/
ENTRY_CFI(lstrnlen_user)
comib,= 0,%r25,$lslen_nzero
copy %r26,%r24
get_sr
1: ldbs,ma 1(%sr1,%r26),%r1
$lslen_loop:
comib,=,n 0,%r1,$lslen_done
addib,<> -1,%r25,$lslen_loop
2: ldbs,ma 1(%sr1,%r26),%r1
$lslen_done:
bv %r0(%r2)
sub %r26,%r24,%r28
$lslen_nzero:
b $lslen_done
ldo 1(%r26),%r26 /* special case for N == 0 */
3: b $lslen_done
copy %r24,%r26 /* reset r26 so 0 is returned on fault */
ASM_EXCEPTIONTABLE_ENTRY(1b,3b)
ASM_EXCEPTIONTABLE_ENTRY(2b,3b)
ENDPROC_CFI(lstrnlen_user)
/* /*
* unsigned long pa_memcpy(void *dstp, const void *srcp, unsigned long len) * unsigned long pa_memcpy(void *dstp, const void *srcp, unsigned long len)
* *
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment