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: Arnd Bergmann <arnd@kernel.org> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Helge Deller <deller@gmx.de>
This commit is contained in:
parent
3da6379a6d
commit
1260dea6d2
@ -10,7 +10,6 @@ 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
|
||||
|
@ -201,13 +201,12 @@ struct exception_table_entry {
|
||||
|
||||
extern long strncpy_from_user(char *, const char __user *, 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
|
||||
*/
|
||||
#define user_addr_max() (~0UL)
|
||||
|
||||
#define strnlen_user lstrnlen_user
|
||||
#define clear_user lclear_user
|
||||
#define __clear_user lclear_user
|
||||
|
||||
|
@ -32,7 +32,6 @@ EXPORT_SYMBOL(__xchg64);
|
||||
|
||||
#include <linux/uaccess.h>
|
||||
EXPORT_SYMBOL(lclear_user);
|
||||
EXPORT_SYMBOL(lstrnlen_user);
|
||||
|
||||
#ifndef CONFIG_64BIT
|
||||
/* Needed so insmod can set dp value */
|
||||
|
@ -67,40 +67,6 @@ $lclu_done:
|
||||
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)
|
||||
*
|
||||
|
Loading…
x
Reference in New Issue
Block a user