aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/powerpc/kernel/signal_32.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c
index 6ce69e6f1fcb..a67e00aa3caa 100644
--- a/arch/powerpc/kernel/signal_32.c
+++ b/arch/powerpc/kernel/signal_32.c
@@ -1022,29 +1022,24 @@ int handle_rt_signal32(unsigned long sig, struct k_sigaction *ka,
1022#ifdef CONFIG_PPC_TRANSACTIONAL_MEM 1022#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
1023 tm_frame = &rt_sf->uc_transact.uc_mcontext; 1023 tm_frame = &rt_sf->uc_transact.uc_mcontext;
1024 if (MSR_TM_ACTIVE(regs->msr)) { 1024 if (MSR_TM_ACTIVE(regs->msr)) {
1025 if (__put_user((unsigned long)&rt_sf->uc_transact,
1026 &rt_sf->uc.uc_link) ||
1027 __put_user((unsigned long)tm_frame,
1028 &rt_sf->uc_transact.uc_regs))
1029 goto badframe;
1025 if (save_tm_user_regs(regs, frame, tm_frame, sigret)) 1030 if (save_tm_user_regs(regs, frame, tm_frame, sigret))
1026 goto badframe; 1031 goto badframe;
1027 } 1032 }
1028 else 1033 else
1029#endif 1034#endif
1030 { 1035 {
1036 if (__put_user(0, &rt_sf->uc.uc_link))
1037 goto badframe;
1031 if (save_user_regs(regs, frame, tm_frame, sigret, 1)) 1038 if (save_user_regs(regs, frame, tm_frame, sigret, 1))
1032 goto badframe; 1039 goto badframe;
1033 } 1040 }
1034 regs->link = tramp; 1041 regs->link = tramp;
1035 1042
1036#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
1037 if (MSR_TM_ACTIVE(regs->msr)) {
1038 if (__put_user((unsigned long)&rt_sf->uc_transact,
1039 &rt_sf->uc.uc_link)
1040 || __put_user((unsigned long)tm_frame, &rt_sf->uc_transact.uc_regs))
1041 goto badframe;
1042 }
1043 else
1044#endif
1045 if (__put_user(0, &rt_sf->uc.uc_link))
1046 goto badframe;
1047
1048 current->thread.fp_state.fpscr = 0; /* turn off all fp exceptions */ 1043 current->thread.fp_state.fpscr = 0; /* turn off all fp exceptions */
1049 1044
1050 /* create a stack frame for the caller of the handler */ 1045 /* create a stack frame for the caller of the handler */