Lines Matching +full:align +full:- +full:size

1 // SPDX-License-Identifier: GPL-2.0-only
11 size_t size) in copy_from_kernel_nofault_allowed() argument
26 len -= sizeof(type); \
29 long copy_from_kernel_nofault(void *dst, const void *src, size_t size) in copy_from_kernel_nofault() argument
31 unsigned long align = 0; in copy_from_kernel_nofault() local
34 align = (unsigned long)dst | (unsigned long)src; in copy_from_kernel_nofault()
36 if (!copy_from_kernel_nofault_allowed(src, size)) in copy_from_kernel_nofault()
37 return -ERANGE; in copy_from_kernel_nofault()
40 if (!(align & 7)) in copy_from_kernel_nofault()
41 copy_from_kernel_nofault_loop(dst, src, size, u64, Efault); in copy_from_kernel_nofault()
42 if (!(align & 3)) in copy_from_kernel_nofault()
43 copy_from_kernel_nofault_loop(dst, src, size, u32, Efault); in copy_from_kernel_nofault()
44 if (!(align & 1)) in copy_from_kernel_nofault()
45 copy_from_kernel_nofault_loop(dst, src, size, u16, Efault); in copy_from_kernel_nofault()
46 copy_from_kernel_nofault_loop(dst, src, size, u8, Efault); in copy_from_kernel_nofault()
51 return -EFAULT; in copy_from_kernel_nofault()
61 len -= sizeof(type); \
64 long copy_to_kernel_nofault(void *dst, const void *src, size_t size) in copy_to_kernel_nofault() argument
66 unsigned long align = 0; in copy_to_kernel_nofault() local
69 align = (unsigned long)dst | (unsigned long)src; in copy_to_kernel_nofault()
72 if (!(align & 7)) in copy_to_kernel_nofault()
73 copy_to_kernel_nofault_loop(dst, src, size, u64, Efault); in copy_to_kernel_nofault()
74 if (!(align & 3)) in copy_to_kernel_nofault()
75 copy_to_kernel_nofault_loop(dst, src, size, u32, Efault); in copy_to_kernel_nofault()
76 if (!(align & 1)) in copy_to_kernel_nofault()
77 copy_to_kernel_nofault_loop(dst, src, size, u16, Efault); in copy_to_kernel_nofault()
78 copy_to_kernel_nofault_loop(dst, src, size, u8, Efault); in copy_to_kernel_nofault()
83 return -EFAULT; in copy_to_kernel_nofault()
94 return -ERANGE; in strncpy_from_kernel_nofault()
101 } while (dst[-1] && src - unsafe_addr < count); in strncpy_from_kernel_nofault()
104 dst[-1] = '\0'; in strncpy_from_kernel_nofault()
105 return src - unsafe_addr; in strncpy_from_kernel_nofault()
109 return -EFAULT; in strncpy_from_kernel_nofault()
113 * copy_from_user_nofault(): safely attempt to read from a user-space location
116 * @size: size of the data chunk
119 * happens, handle that and return -EFAULT.
121 long copy_from_user_nofault(void *dst, const void __user *src, size_t size) in copy_from_user_nofault() argument
123 long ret = -EFAULT; in copy_from_user_nofault()
125 if (!__access_ok(src, size)) in copy_from_user_nofault()
132 ret = __copy_from_user_inatomic(dst, src, size); in copy_from_user_nofault()
136 return -EFAULT; in copy_from_user_nofault()
142 * copy_to_user_nofault(): safely attempt to write to a user-space location
145 * @size: size of the data chunk
148 * happens, handle that and return -EFAULT.
150 long copy_to_user_nofault(void __user *dst, const void *src, size_t size) in copy_to_user_nofault() argument
152 long ret = -EFAULT; in copy_to_user_nofault()
154 if (access_ok(dst, size)) { in copy_to_user_nofault()
156 ret = __copy_to_user_inatomic(dst, src, size); in copy_to_user_nofault()
161 return -EFAULT; in copy_to_user_nofault()
167 * strncpy_from_user_nofault: - Copy a NUL terminated string from unsafe user
174 * Copies a NUL-terminated string from unsafe user address to kernel buffer.
178 * If access fails, returns -EFAULT (some data may have been copied
181 * If @count is smaller than the length of the string, copies @count-1 bytes,
198 dst[ret - 1] = '\0'; in strncpy_from_user_nofault()
207 * strnlen_user_nofault: - Get the size of a user string INCLUDING final NUL.
211 * Get the size of a NUL-terminated string in user space without pagefault.
213 * Returns the size of the string INCLUDING the terminating NUL.
233 void __copy_overflow(int size, unsigned long count) in __copy_overflow() argument
235 WARN(1, "Buffer overflow detected (%d < %lu)!\n", size, count); in __copy_overflow()