@@ -302,25 +302,16 @@ __setup_frame(int sig, struct ksignal *ksig, sigset_t *set,
302
302
{
303
303
struct sigframe __user * frame ;
304
304
void __user * restorer ;
305
- int err = 0 ;
306
305
void __user * fp = NULL ;
307
306
308
307
frame = get_sigframe (& ksig -> ka , regs , sizeof (* frame ), & fp );
309
308
310
- if (!access_ok (frame , sizeof (* frame )))
311
- return - EFAULT ;
312
-
313
- if (__put_user (sig , & frame -> sig ))
309
+ if (!user_access_begin (frame , sizeof (* frame )))
314
310
return - EFAULT ;
315
311
316
- if (!user_access_begin (& frame -> sc , sizeof (struct sigcontext )))
317
- return - EFAULT ;
312
+ unsafe_put_user (sig , & frame -> sig , Efault );
318
313
unsafe_put_sigcontext (& frame -> sc , fp , regs , set , Efault );
319
- user_access_end ();
320
-
321
- if (__put_user (set -> sig [1 ], & frame -> extramask [0 ]))
322
- return - EFAULT ;
323
-
314
+ unsafe_put_user (set -> sig [1 ], & frame -> extramask [0 ], Efault );
324
315
if (current -> mm -> context .vdso )
325
316
restorer = current -> mm -> context .vdso +
326
317
vdso_image_32 .sym___kernel_sigreturn ;
@@ -330,7 +321,7 @@ __setup_frame(int sig, struct ksignal *ksig, sigset_t *set,
330
321
restorer = ksig -> ka .sa .sa_restorer ;
331
322
332
323
/* Set up to return from userspace. */
333
- err |= __put_user (restorer , & frame -> pretcode );
324
+ unsafe_put_user (restorer , & frame -> pretcode , Efault );
334
325
335
326
/*
336
327
* This is popl %eax ; movl $__NR_sigreturn, %eax ; int $0x80
@@ -339,10 +330,8 @@ __setup_frame(int sig, struct ksignal *ksig, sigset_t *set,
339
330
* reasons and because gdb uses it as a signature to notice
340
331
* signal handler stack frames.
341
332
*/
342
- err |= __put_user (* ((u64 * )& retcode ), (u64 * )frame -> retcode );
343
-
344
- if (err )
345
- return - EFAULT ;
333
+ unsafe_put_user (* ((u64 * )& retcode ), (u64 * )frame -> retcode , Efault );
334
+ user_access_end ();
346
335
347
336
/* Set up registers for signal handler */
348
337
regs -> sp = (unsigned long )frame ;
0 commit comments