@@ -517,22 +517,13 @@ static int x32_setup_rt_frame(struct ksignal *ksig,
517
517
struct rt_sigframe_x32 __user * frame ;
518
518
unsigned long uc_flags ;
519
519
void __user * restorer ;
520
- int err = 0 ;
521
520
void __user * fp = NULL ;
522
521
523
522
if (!(ksig -> ka .sa .sa_flags & SA_RESTORER ))
524
523
return - EFAULT ;
525
524
526
525
frame = get_sigframe (& ksig -> ka , regs , sizeof (* frame ), & fp );
527
526
528
- if (!access_ok (frame , sizeof (* frame )))
529
- return - EFAULT ;
530
-
531
- if (ksig -> ka .sa .sa_flags & SA_SIGINFO ) {
532
- if (__copy_siginfo_to_user32 (& frame -> info , & ksig -> info , true))
533
- return - EFAULT ;
534
- }
535
-
536
527
uc_flags = frame_uc_flags (regs );
537
528
538
529
if (!user_access_begin (frame , sizeof (* frame )))
@@ -546,11 +537,13 @@ static int x32_setup_rt_frame(struct ksignal *ksig,
546
537
restorer = ksig -> ka .sa .sa_restorer ;
547
538
unsafe_put_user (restorer , (unsigned long __user * )& frame -> pretcode , Efault );
548
539
unsafe_put_sigcontext (& frame -> uc .uc_mcontext , fp , regs , set , Efault );
540
+ unsafe_put_user (* (__u64 * )set , (__u64 __user * )& frame -> uc .uc_sigmask , Efault );
549
541
user_access_end ();
550
- err |= __put_user (* (__u64 * )set , (__u64 __user * )& frame -> uc .uc_sigmask );
551
542
552
- if (err )
553
- return - EFAULT ;
543
+ if (ksig -> ka .sa .sa_flags & SA_SIGINFO ) {
544
+ if (__copy_siginfo_to_user32 (& frame -> info , & ksig -> info , true))
545
+ return - EFAULT ;
546
+ }
554
547
555
548
/* Set up registers for signal handler */
556
549
regs -> sp = (unsigned long ) frame ;
0 commit comments