diff options
-rw-r--r-- | arch/arm64/kernel/signal32.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/arm64/kernel/signal32.c b/arch/arm64/kernel/signal32.c index e8772c07cf5c..e51bbe79f5b5 100644 --- a/arch/arm64/kernel/signal32.c +++ b/arch/arm64/kernel/signal32.c | |||
@@ -446,12 +446,13 @@ static void compat_setup_return(struct pt_regs *regs, struct k_sigaction *ka, | |||
446 | /* Check if the handler is written for ARM or Thumb */ | 446 | /* Check if the handler is written for ARM or Thumb */ |
447 | thumb = handler & 1; | 447 | thumb = handler & 1; |
448 | 448 | ||
449 | if (thumb) { | 449 | if (thumb) |
450 | spsr |= COMPAT_PSR_T_BIT; | 450 | spsr |= COMPAT_PSR_T_BIT; |
451 | spsr &= ~COMPAT_PSR_IT_MASK; | 451 | else |
452 | } else { | ||
453 | spsr &= ~COMPAT_PSR_T_BIT; | 452 | spsr &= ~COMPAT_PSR_T_BIT; |
454 | } | 453 | |
454 | /* The IT state must be cleared for both ARM and Thumb-2 */ | ||
455 | spsr &= ~COMPAT_PSR_IT_MASK; | ||
455 | 456 | ||
456 | if (ka->sa.sa_flags & SA_RESTORER) { | 457 | if (ka->sa.sa_flags & SA_RESTORER) { |
457 | retcode = ptr_to_compat(ka->sa.sa_restorer); | 458 | retcode = ptr_to_compat(ka->sa.sa_restorer); |