@@ -98,7 +98,6 @@ struct exception_table_entry {
9898 unsigned int insn , fixup ;
9999};
100100
101- void __ret_efault (void );
102101void __retl_efault (void );
103102
104103/* Uh, these should become the main single-value transfer routines..
@@ -179,20 +178,6 @@ int __put_user_bad(void);
179178 __gu_ret; \
180179})
181180
182- #define __get_user_nocheck_ret (data , addr , size , type , retval ) ({ \
183- register unsigned long __gu_val __asm__ ("l1"); \
184- switch (size) { \
185- case 1: __get_user_asm_ret(__gu_val, ub, addr, retval); break; \
186- case 2: __get_user_asm_ret(__gu_val, uh, addr, retval); break; \
187- case 4: __get_user_asm_ret(__gu_val, uw, addr, retval); break; \
188- case 8: __get_user_asm_ret(__gu_val, x, addr, retval); break; \
189- default: \
190- if (__get_user_bad()) \
191- return retval; \
192- } \
193- data = (__force type) __gu_val; \
194- })
195-
196181#define __get_user_asm (x , size , addr , ret ) \
197182__asm__ __volatile__( \
198183 "/* Get user asm, inline. */ \n " \
@@ -214,86 +199,39 @@ __asm__ __volatile__( \
214199 : "=r" (ret), "=r" (x) : "r" (__m(addr)), \
215200 "i" (-EFAULT))
216201
217- #define __get_user_asm_ret (x , size , addr , retval ) \
218- if (__builtin_constant_p(retval) && retval == -EFAULT) \
219- __asm__ __volatile__( \
220- "/* Get user asm ret, inline. */ \n " \
221- "1:\t" "ld"#size "a [%1] %%asi, %0\n\n\t" \
222- ".section __ex_table,\"a\"\n\t" \
223- ".align 4\n\t" \
224- ".word 1b,__ret_efault\n\n\t" \
225- ".previous\n\t" \
226- : "=r" (x) : "r" (__m(addr))); \
227- else \
228- __asm__ __volatile__( \
229- "/* Get user asm ret, inline. */ \n " \
230- "1:\t" "ld"#size "a [%1] %%asi, %0\n\n\t" \
231- ".section .fixup,#alloc,#execinstr\n\t" \
232- ".align 4\n" \
233- "3:\n\t" \
234- "ret\n\t" \
235- " restore %%g0, %2, %%o0\n\n\t" \
236- ".previous\n\t" \
237- ".section __ex_table,\"a\"\n\t" \
238- ".align 4\n\t" \
239- ".word 1b, 3b\n\n\t" \
240- ".previous\n\t" \
241- : "=r" (x) : "r" (__m(addr)), "i" (retval))
242-
243202int __get_user_bad (void );
244203
245204unsigned long __must_check ___copy_from_user (void * to ,
246205 const void __user * from ,
247206 unsigned long size );
248- unsigned long copy_from_user_fixup (void * to , const void __user * from ,
249- unsigned long size );
250207static inline unsigned long __must_check
251208copy_from_user (void * to , const void __user * from , unsigned long size )
252209{
253- unsigned long ret ;
254-
255210 check_object_size (to , size , false);
256211
257- ret = ___copy_from_user (to , from , size );
258- if (unlikely (ret ))
259- ret = copy_from_user_fixup (to , from , size );
260-
261- return ret ;
212+ return ___copy_from_user (to , from , size );
262213}
263214#define __copy_from_user copy_from_user
264215
265216unsigned long __must_check ___copy_to_user (void __user * to ,
266217 const void * from ,
267218 unsigned long size );
268- unsigned long copy_to_user_fixup (void __user * to , const void * from ,
269- unsigned long size );
270219static inline unsigned long __must_check
271220copy_to_user (void __user * to , const void * from , unsigned long size )
272221{
273- unsigned long ret ;
274-
275222 check_object_size (from , size , true);
276223
277- ret = ___copy_to_user (to , from , size );
278- if (unlikely (ret ))
279- ret = copy_to_user_fixup (to , from , size );
280- return ret ;
224+ return ___copy_to_user (to , from , size );
281225}
282226#define __copy_to_user copy_to_user
283227
284228unsigned long __must_check ___copy_in_user (void __user * to ,
285229 const void __user * from ,
286230 unsigned long size );
287- unsigned long copy_in_user_fixup (void __user * to , void __user * from ,
288- unsigned long size );
289231static inline unsigned long __must_check
290232copy_in_user (void __user * to , void __user * from , unsigned long size )
291233{
292- unsigned long ret = ___copy_in_user (to , from , size );
293-
294- if (unlikely (ret ))
295- ret = copy_in_user_fixup (to , from , size );
296- return ret ;
234+ return ___copy_in_user (to , from , size );
297235}
298236#define __copy_in_user copy_in_user
299237
0 commit comments