Lines Matching +full:data +full:- +full:addr
1 /* SPDX-License-Identifier: GPL-2.0 */
17 #include <asm-generic/access_ok.h>
30 static inline bool __chk_range_not_ok(unsigned long addr, unsigned long size, unsigned long limit) in __chk_range_not_ok() argument
33 return addr > limit - size; in __chk_range_not_ok()
35 addr += size; in __chk_range_not_ok()
36 if (addr < size) in __chk_range_not_ok()
39 return addr > limit; in __chk_range_not_ok()
42 #define __range_not_ok(addr, size, limit) \ argument
44 __chk_user_ptr(addr); \
45 __chk_range_not_ok((unsigned long __force)(addr), size, limit); \
50 /* Uh, these should become the main single-value transfer routines..
79 type *addr = (type __force *)(dst); \
80 type data = *(type *)src; \
83 case 1: __put_kernel_asm(data, b, addr, __pu_ret); break; \
84 case 2: __put_kernel_asm(data, h, addr, __pu_ret); break; \
85 case 4: __put_kernel_asm(data, w, addr, __pu_ret); break; \
86 case 8: __put_kernel_asm(data, x, addr, __pu_ret); break; \
93 #define __put_kernel_asm(x, size, addr, ret) \ argument
110 : "=r" (ret) : "r" (x), "r" (__m(addr)), \
111 "i" (-EFAULT))
113 #define __put_user_nocheck(data, addr, size) ({ \ argument
116 case 1: __put_user_asm(data, b, addr, __pu_ret); break; \
117 case 2: __put_user_asm(data, h, addr, __pu_ret); break; \
118 case 4: __put_user_asm(data, w, addr, __pu_ret); break; \
119 case 8: __put_user_asm(data, x, addr, __pu_ret); break; \
125 #define __put_user_asm(x, size, addr, ret) \ argument
142 : "=r" (ret) : "r" (x), "r" (__m(addr)), \
143 "i" (-EFAULT))
149 type *addr = (type __force *)(src); \
153 case 1: __get_kernel_asm(__gu_val, ub, addr, __gu_ret); break; \
154 case 2: __get_kernel_asm(__gu_val, uh, addr, __gu_ret); break; \
155 case 4: __get_kernel_asm(__gu_val, uw, addr, __gu_ret); break; \
156 case 8: __get_kernel_asm(__gu_val, x, addr, __gu_ret); break; \
166 #define __get_kernel_asm(x, size, addr, ret) \ argument
184 : "=r" (ret), "=r" (x) : "r" (__m(addr)), \
185 "i" (-EFAULT))
187 #define __get_user_nocheck(data, addr, size, type) ({ \ argument
191 case 1: __get_user_asm(__gu_val, ub, addr, __gu_ret); break; \
192 case 2: __get_user_asm(__gu_val, uh, addr, __gu_ret); break; \
193 case 4: __get_user_asm(__gu_val, uw, addr, __gu_ret); break; \
194 case 8: __get_user_asm(__gu_val, x, addr, __gu_ret); break; \
200 data = (__force type) __gu_val; \
204 #define __get_user_asm(x, size, addr, ret) \ argument
222 : "=r" (ret), "=r" (x) : "r" (__m(addr)), \
223 "i" (-EFAULT))