Merge branches 'fixes', 'misc' and 'spectre' into for-linus
[sfrench/cifs-2.6.git] / arch / arm / kernel / signal.c
index db62c51250ad2d80b6ae0246da6dce2d63314ce1..5cc5a4259d03ca16079c4ff29463267b553c2c92 100644 (file)
@@ -540,6 +540,12 @@ static void handle_signal(struct ksignal *ksig, struct pt_regs *regs)
        sigset_t *oldset = sigmask_to_save();
        int ret;
 
+       /*
+        * Increment event counter and perform fixup for the pre-signal
+        * frame.
+        */
+       rseq_signal_deliver(regs);
+
        /*
         * Set up the stack frame
         */
@@ -660,6 +666,7 @@ do_work_pending(struct pt_regs *regs, unsigned int thread_flags, int syscall)
                        } else {
                                clear_thread_flag(TIF_NOTIFY_RESUME);
                                tracehook_notify_resume(regs);
+                               rseq_handle_notify_resume(regs);
                        }
                }
                local_irq_disable();
@@ -703,3 +710,10 @@ asmlinkage void addr_limit_check_failed(void)
 {
        addr_limit_user_check();
 }
+
+#ifdef CONFIG_DEBUG_RSEQ
+asmlinkage void do_rseq_syscall(struct pt_regs *regs)
+{
+       rseq_syscall(regs);
+}
+#endif