diff options
author | Mark Brown <broonie@kernel.org> | 2021-10-18 13:51:43 +0100 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2021-10-18 13:51:43 +0100 |
commit | ed96f35cecb0a7d1d95bbba8b9f212e60d0f7480 (patch) | |
tree | 15fe5f3dc395c3b1e713ad52bcd529b1a343cfe2 /arch/csky/kernel/signal.c | |
parent | 72bf80cf09c4693780ad93a31b48fa5a4e17a946 (diff) | |
parent | 519d81956ee277b4419c723adfb154603c2565ba (diff) | |
download | linux-stable-ed96f35cecb0a7d1d95bbba8b9f212e60d0f7480.tar.gz linux-stable-ed96f35cecb0a7d1d95bbba8b9f212e60d0f7480.tar.bz2 linux-stable-ed96f35cecb0a7d1d95bbba8b9f212e60d0f7480.zip |
Merge tag 'v5.15-rc6' into regulator-5.16
Linux 5.15-rc6
Diffstat (limited to 'arch/csky/kernel/signal.c')
-rw-r--r-- | arch/csky/kernel/signal.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/csky/kernel/signal.c b/arch/csky/kernel/signal.c index 312f046d452d..c7b763d2f526 100644 --- a/arch/csky/kernel/signal.c +++ b/arch/csky/kernel/signal.c @@ -52,10 +52,14 @@ static long restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) { int err = 0; + unsigned long sr = regs->sr; /* sc_pt_regs is structured the same as the start of pt_regs */ err |= __copy_from_user(regs, &sc->sc_pt_regs, sizeof(struct pt_regs)); + /* BIT(0) of regs->sr is Condition Code/Carry bit */ + regs->sr = (sr & ~1) | (regs->sr & 1); + /* Restore the floating-point state. */ err |= restore_fpu_state(sc); @@ -260,8 +264,6 @@ asmlinkage void do_notify_resume(struct pt_regs *regs, if (thread_info_flags & (_TIF_SIGPENDING | _TIF_NOTIFY_SIGNAL)) do_signal(regs); - if (thread_info_flags & _TIF_NOTIFY_RESUME) { + if (thread_info_flags & _TIF_NOTIFY_RESUME) tracehook_notify_resume(regs); - rseq_handle_notify_resume(NULL, regs); - } } |