@@ -370,13 +370,12 @@ struct rt_sigframe
370
370
char retcode [8 ];
371
371
};
372
372
373
- int setup_signal_stack_sc (unsigned long stack_top , int sig ,
374
- struct k_sigaction * ka , struct pt_regs * regs ,
375
- sigset_t * mask )
373
+ int setup_signal_stack_sc (unsigned long stack_top , struct ksignal * ksig ,
374
+ struct pt_regs * regs , sigset_t * mask )
376
375
{
377
376
struct sigframe __user * frame ;
378
377
void __user * restorer ;
379
- int err = 0 ;
378
+ int err = 0 , sig = ksig -> sig ;
380
379
381
380
/* This is the same calculation as i386 - ((sp + 4) & 15) == 0 */
382
381
stack_top = ((stack_top + 4 ) & -16UL ) - 4 ;
@@ -385,8 +384,8 @@ int setup_signal_stack_sc(unsigned long stack_top, int sig,
385
384
return 1 ;
386
385
387
386
restorer = frame -> retcode ;
388
- if (ka -> sa .sa_flags & SA_RESTORER )
389
- restorer = ka -> sa .sa_restorer ;
387
+ if (ksig -> ka . sa .sa_flags & SA_RESTORER )
388
+ restorer = ksig -> ka . sa .sa_restorer ;
390
389
391
390
err |= __put_user (restorer , & frame -> pretcode );
392
391
err |= __put_user (sig , & frame -> sig );
@@ -410,35 +409,34 @@ int setup_signal_stack_sc(unsigned long stack_top, int sig,
410
409
return err ;
411
410
412
411
PT_REGS_SP (regs ) = (unsigned long ) frame ;
413
- PT_REGS_IP (regs ) = (unsigned long ) ka -> sa .sa_handler ;
412
+ PT_REGS_IP (regs ) = (unsigned long ) ksig -> ka . sa .sa_handler ;
414
413
PT_REGS_AX (regs ) = (unsigned long ) sig ;
415
414
PT_REGS_DX (regs ) = (unsigned long ) 0 ;
416
415
PT_REGS_CX (regs ) = (unsigned long ) 0 ;
417
416
return 0 ;
418
417
}
419
418
420
- int setup_signal_stack_si (unsigned long stack_top , int sig ,
421
- struct k_sigaction * ka , struct pt_regs * regs ,
422
- siginfo_t * info , sigset_t * mask )
419
+ int setup_signal_stack_si (unsigned long stack_top , struct ksignal * ksig ,
420
+ struct pt_regs * regs , sigset_t * mask )
423
421
{
424
422
struct rt_sigframe __user * frame ;
425
423
void __user * restorer ;
426
- int err = 0 ;
424
+ int err = 0 , sig = ksig -> sig ;
427
425
428
426
stack_top &= -8UL ;
429
427
frame = (struct rt_sigframe __user * ) stack_top - 1 ;
430
428
if (!access_ok (VERIFY_WRITE , frame , sizeof (* frame )))
431
429
return 1 ;
432
430
433
431
restorer = frame -> retcode ;
434
- if (ka -> sa .sa_flags & SA_RESTORER )
435
- restorer = ka -> sa .sa_restorer ;
432
+ if (ksig -> ka . sa .sa_flags & SA_RESTORER )
433
+ restorer = ksig -> ka . sa .sa_restorer ;
436
434
437
435
err |= __put_user (restorer , & frame -> pretcode );
438
436
err |= __put_user (sig , & frame -> sig );
439
437
err |= __put_user (& frame -> info , & frame -> pinfo );
440
438
err |= __put_user (& frame -> uc , & frame -> puc );
441
- err |= copy_siginfo_to_user (& frame -> info , info );
439
+ err |= copy_siginfo_to_user (& frame -> info , & ksig -> info );
442
440
err |= copy_ucontext_to_user (& frame -> uc , & frame -> fpstate , mask ,
443
441
PT_REGS_SP (regs ));
444
442
@@ -457,7 +455,7 @@ int setup_signal_stack_si(unsigned long stack_top, int sig,
457
455
return err ;
458
456
459
457
PT_REGS_SP (regs ) = (unsigned long ) frame ;
460
- PT_REGS_IP (regs ) = (unsigned long ) ka -> sa .sa_handler ;
458
+ PT_REGS_IP (regs ) = (unsigned long ) ksig -> ka . sa .sa_handler ;
461
459
PT_REGS_AX (regs ) = (unsigned long ) sig ;
462
460
PT_REGS_DX (regs ) = (unsigned long ) & frame -> info ;
463
461
PT_REGS_CX (regs ) = (unsigned long ) & frame -> uc ;
@@ -502,12 +500,11 @@ struct rt_sigframe
502
500
struct _fpstate fpstate ;
503
501
};
504
502
505
- int setup_signal_stack_si (unsigned long stack_top , int sig ,
506
- struct k_sigaction * ka , struct pt_regs * regs ,
507
- siginfo_t * info , sigset_t * set )
503
+ int setup_signal_stack_si (unsigned long stack_top , struct ksignal * ksig ,
504
+ struct pt_regs * regs , sigset_t * set )
508
505
{
509
506
struct rt_sigframe __user * frame ;
510
- int err = 0 ;
507
+ int err = 0 , sig = ksig -> sig ;
511
508
512
509
frame = (struct rt_sigframe __user * )
513
510
round_down (stack_top - sizeof (struct rt_sigframe ), 16 );
@@ -517,8 +514,8 @@ int setup_signal_stack_si(unsigned long stack_top, int sig,
517
514
if (!access_ok (VERIFY_WRITE , frame , sizeof (* frame )))
518
515
goto out ;
519
516
520
- if (ka -> sa .sa_flags & SA_SIGINFO ) {
521
- err |= copy_siginfo_to_user (& frame -> info , info );
517
+ if (ksig -> ka . sa .sa_flags & SA_SIGINFO ) {
518
+ err |= copy_siginfo_to_user (& frame -> info , & ksig -> info );
522
519
if (err )
523
520
goto out ;
524
521
}
@@ -543,8 +540,8 @@ int setup_signal_stack_si(unsigned long stack_top, int sig,
543
540
* already in userspace.
544
541
*/
545
542
/* x86-64 should always use SA_RESTORER. */
546
- if (ka -> sa .sa_flags & SA_RESTORER )
547
- err |= __put_user (ka -> sa .sa_restorer , & frame -> pretcode );
543
+ if (ksig -> ka . sa .sa_flags & SA_RESTORER )
544
+ err |= __put_user (ksig -> ka . sa .sa_restorer , & frame -> pretcode );
548
545
else
549
546
/* could use a vstub here */
550
547
return err ;
@@ -570,7 +567,7 @@ int setup_signal_stack_si(unsigned long stack_top, int sig,
570
567
*/
571
568
PT_REGS_SI (regs ) = (unsigned long ) & frame -> info ;
572
569
PT_REGS_DX (regs ) = (unsigned long ) & frame -> uc ;
573
- PT_REGS_IP (regs ) = (unsigned long ) ka -> sa .sa_handler ;
570
+ PT_REGS_IP (regs ) = (unsigned long ) ksig -> ka . sa .sa_handler ;
574
571
out :
575
572
return err ;
576
573
}
0 commit comments