@@ -357,7 +357,6 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig,
357
357
{
358
358
struct rt_sigframe __user * frame ;
359
359
void __user * restorer ;
360
- int err = 0 ;
361
360
void __user * fp = NULL ;
362
361
363
362
frame = get_sigframe (& ksig -> ka , regs , sizeof (* frame ), & fp );
@@ -393,11 +392,11 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig,
393
392
*/
394
393
unsafe_put_user (* ((u64 * )& rt_retcode ), (u64 * )frame -> retcode , Efault );
395
394
unsafe_put_sigcontext (& frame -> uc .uc_mcontext , fp , regs , set , Efault );
395
+ unsafe_put_user (* (__u64 * )set ,
396
+ (__u64 __user * )& frame -> uc .uc_sigmask , Efault );
396
397
user_access_end ();
397
398
398
- err |= copy_siginfo_to_user (& frame -> info , & ksig -> info );
399
- err |= __copy_to_user (& frame -> uc .uc_sigmask , set , sizeof (* set ));
400
- if (err )
399
+ if (copy_siginfo_to_user (& frame -> info , & ksig -> info ))
401
400
return - EFAULT ;
402
401
403
402
/* Set up registers for signal handler */
@@ -439,23 +438,14 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig,
439
438
struct rt_sigframe __user * frame ;
440
439
void __user * fp = NULL ;
441
440
unsigned long uc_flags ;
442
- int err = 0 ;
443
441
444
442
/* x86-64 should always use SA_RESTORER. */
445
443
if (!(ksig -> ka .sa .sa_flags & SA_RESTORER ))
446
444
return - EFAULT ;
447
445
448
446
frame = get_sigframe (& ksig -> ka , regs , sizeof (struct rt_sigframe ), & fp );
449
-
450
- if (!access_ok (frame , sizeof (* frame )))
451
- return - EFAULT ;
452
-
453
- if (ksig -> ka .sa .sa_flags & SA_SIGINFO ) {
454
- if (copy_siginfo_to_user (& frame -> info , & ksig -> info ))
455
- return - EFAULT ;
456
- }
457
-
458
447
uc_flags = frame_uc_flags (regs );
448
+
459
449
if (!user_access_begin (frame , sizeof (* frame )))
460
450
return - EFAULT ;
461
451
@@ -468,11 +458,13 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig,
468
458
already in userspace. */
469
459
unsafe_put_user (ksig -> ka .sa .sa_restorer , & frame -> pretcode , Efault );
470
460
unsafe_put_sigcontext (& frame -> uc .uc_mcontext , fp , regs , set , Efault );
461
+ unsafe_put_user (set -> sig [0 ], & frame -> uc .uc_sigmask .sig [0 ], Efault );
471
462
user_access_end ();
472
- err |= __put_user (set -> sig [0 ], & frame -> uc .uc_sigmask .sig [0 ]);
473
463
474
- if (err )
475
- return - EFAULT ;
464
+ if (ksig -> ka .sa .sa_flags & SA_SIGINFO ) {
465
+ if (copy_siginfo_to_user (& frame -> info , & ksig -> info ))
466
+ return - EFAULT ;
467
+ }
476
468
477
469
/* Set up registers for signal handler */
478
470
regs -> di = sig ;
0 commit comments