···173173extern unsigned long __do_clear_user(void __user *to, unsigned long n);174174175175static inline long176176-__strncpy_from_user(char *dst, const char __user *src, long count)177177-{178178- return __do_strncpy_from_user(dst, src, count);179179-}180180-181181-static inline long182176strncpy_from_user(char *dst, const char __user *src, long count)183177{184178 long res = -EFAULT;
-2
arch/m32r/include/asm/uaccess.h
···482482483483long __must_check strncpy_from_user(char *dst, const char __user *src,484484 long count);485485-long __must_check __strncpy_from_user(char *dst,486486- const char __user *src, long count);487485488486/**489487 * __clear_user: - Zero a block of memory in user space, with less checking.
···8989#endif /* CONFIG_ISA_DUAL_ISSUE */90909191long9292-__strncpy_from_user(char *dst, const char __user *src, long count)9393-{9494- long res;9595- __do_strncpy_from_user(dst, src, count, res);9696- return res;9797-}9898-9999-long10092strncpy_from_user(char *dst, const char __user *src, long count)10193{10294 long res = -EFAULT;
+1-3
arch/microblaze/include/asm/uaccess.h
···355355 */356356extern int __strncpy_user(char *to, const char __user *from, int len);357357358358-#define __strncpy_from_user __strncpy_user359359-360358static inline long361359strncpy_from_user(char *dst, const char __user *src, long count)362360{363361 if (!access_ok(VERIFY_READ, src, 1))364362 return -EFAULT;365365- return __strncpy_from_user(dst, src, count);363363+ return __strncpy_user(dst, src, count);366364}367365368366/*
-54
arch/mips/include/asm/uaccess.h
···967967 __cl_size; \968968})969969970970-extern long __strncpy_from_kernel_nocheck_asm(char *__to, const char __user *__from, long __len);971971-extern long __strncpy_from_user_nocheck_asm(char *__to, const char __user *__from, long __len);972972-973973-/*974974- * __strncpy_from_user: - Copy a NUL terminated string from userspace, with less checking.975975- * @dst: Destination address, in kernel space. This buffer must be at976976- * least @count bytes long.977977- * @src: Source address, in user space.978978- * @count: Maximum number of bytes to copy, including the trailing NUL.979979- *980980- * Copies a NUL-terminated string from userspace to kernel space.981981- * Caller must check the specified block with access_ok() before calling982982- * this function.983983- *984984- * On success, returns the length of the string (not including the trailing985985- * NUL).986986- *987987- * If access to userspace fails, returns -EFAULT (some data may have been988988- * copied).989989- *990990- * If @count is smaller than the length of the string, copies @count bytes991991- * and returns @count.992992- */993993-static inline long994994-__strncpy_from_user(char *__to, const char __user *__from, long __len)995995-{996996- long res;997997-998998- if (eva_kernel_access()) {999999- __asm__ __volatile__(10001000- "move\t$4, %1\n\t"10011001- "move\t$5, %2\n\t"10021002- "move\t$6, %3\n\t"10031003- __MODULE_JAL(__strncpy_from_kernel_nocheck_asm)10041004- "move\t%0, $2"10051005- : "=r" (res)10061006- : "r" (__to), "r" (__from), "r" (__len)10071007- : "$2", "$3", "$4", "$5", "$6", __UA_t0, "$31", "memory");10081008- } else {10091009- might_fault();10101010- __asm__ __volatile__(10111011- "move\t$4, %1\n\t"10121012- "move\t$5, %2\n\t"10131013- "move\t$6, %3\n\t"10141014- __MODULE_JAL(__strncpy_from_user_nocheck_asm)10151015- "move\t%0, $2"10161016- : "=r" (res)10171017- : "r" (__to), "r" (__from), "r" (__len)10181018- : "$2", "$3", "$4", "$5", "$6", __UA_t0, "$31", "memory");10191019- }10201020-10211021- return res;10221022-}10231023-1024970extern long __strncpy_from_kernel_asm(char *__to, const char __user *__from, long __len);1025971extern long __strncpy_from_user_asm(char *__to, const char __user *__from, long __len);1026972
···290290}291291292292extern long strncpy_from_user(char *dst, const char __user *src, long count);293293-extern long __strncpy_from_user(char *dst, const char __user *src, long count);294293extern long strnlen_user(const char __user *str, long n);295294extern unsigned long clear_user(void __user *mem, unsigned long len);296295extern unsigned long __clear_user(void __user *mem, unsigned long len);
···5050} while (0)51515252long5353-__strncpy_from_user(char *dst, const char *src, long count)5454-{5555- long res;5656- __do_strncpy_from_user(dst, src, count, res);5757- return res;5858-}5959-6060-long6153strncpy_from_user(char *dst, const char *src, long count)6254{6355 long res = -EFAULT;