|
@@ -1568,46 +1568,6 @@ ___clear_user_exit:
|
|
|
|
|
|
#endif /* CONFIG_MMU */
|
|
|
|
|
|
-/*
|
|
|
- * extern long __strnlen_user(const char *__s, long __n)
|
|
|
- *
|
|
|
- * Inputs:
|
|
|
- * (r2) source address
|
|
|
- * (r3) source size in bytes
|
|
|
- *
|
|
|
- * Ouputs:
|
|
|
- * (r2) -EFAULT (in case of faulting)
|
|
|
- * string length (otherwise)
|
|
|
- */
|
|
|
- .global __strnlen_user
|
|
|
-__strnlen_user:
|
|
|
- pta ___strnlen_user_set_reply, tr0
|
|
|
- pta ___strnlen_user1, tr1
|
|
|
- or ZERO, ZERO, r5 /* r5 = counter */
|
|
|
- movi -(EFAULT), r6 /* r6 = reply, no real fixup */
|
|
|
- or ZERO, ZERO, r7 /* r7 = data, clear top byte of data */
|
|
|
- beq r3, ZERO, tr0
|
|
|
-
|
|
|
-___strnlen_user1:
|
|
|
- ldx.b r2, r5, r7 /* Fault address: only in reading */
|
|
|
- addi r3, -1, r3 /* No real fixup */
|
|
|
- addi r5, 1, r5
|
|
|
- beq r3, ZERO, tr0
|
|
|
- bne r7, ZERO, tr1
|
|
|
-! The line below used to be active. This meant led to a junk byte lying between each pair
|
|
|
-! of entries in the argv & envp structures in memory. Whilst the program saw the right data
|
|
|
-! via the argv and envp arguments to main, it meant the 'flat' representation visible through
|
|
|
-! /proc/$pid/cmdline was corrupt, causing trouble with ps, for example.
|
|
|
-! addi r5, 1, r5 /* Include '\0' */
|
|
|
-
|
|
|
-___strnlen_user_set_reply:
|
|
|
- or r5, ZERO, r6 /* If done, return counter */
|
|
|
-
|
|
|
-___strnlen_user_exit:
|
|
|
- or r6, ZERO, r2
|
|
|
- ptabs LINK, tr0
|
|
|
- blink tr0, ZERO
|
|
|
-
|
|
|
/*
|
|
|
* extern long __get_user_asm_?(void *val, long addr)
|
|
|
*
|
|
@@ -1942,7 +1902,6 @@ asm_uaccess_start:
|
|
|
.long ___copy_user2, ___copy_user_exit
|
|
|
.long ___clear_user1, ___clear_user_exit
|
|
|
#endif
|
|
|
- .long ___strnlen_user1, ___strnlen_user_exit
|
|
|
.long ___get_user_asm_b1, ___get_user_asm_b_exit
|
|
|
.long ___get_user_asm_w1, ___get_user_asm_w_exit
|
|
|
.long ___get_user_asm_l1, ___get_user_asm_l_exit
|