|
@@ -1799,20 +1799,22 @@ static inline void rseq_set_notify_resume(struct task_struct *t)
|
|
set_tsk_thread_flag(t, TIF_NOTIFY_RESUME);
|
|
set_tsk_thread_flag(t, TIF_NOTIFY_RESUME);
|
|
}
|
|
}
|
|
|
|
|
|
-void __rseq_handle_notify_resume(struct pt_regs *regs);
|
|
|
|
|
|
+void __rseq_handle_notify_resume(struct ksignal *sig, struct pt_regs *regs);
|
|
|
|
|
|
-static inline void rseq_handle_notify_resume(struct pt_regs *regs)
|
|
|
|
|
|
+static inline void rseq_handle_notify_resume(struct ksignal *ksig,
|
|
|
|
+ struct pt_regs *regs)
|
|
{
|
|
{
|
|
if (current->rseq)
|
|
if (current->rseq)
|
|
- __rseq_handle_notify_resume(regs);
|
|
|
|
|
|
+ __rseq_handle_notify_resume(ksig, regs);
|
|
}
|
|
}
|
|
|
|
|
|
-static inline void rseq_signal_deliver(struct pt_regs *regs)
|
|
|
|
|
|
+static inline void rseq_signal_deliver(struct ksignal *ksig,
|
|
|
|
+ struct pt_regs *regs)
|
|
{
|
|
{
|
|
preempt_disable();
|
|
preempt_disable();
|
|
__set_bit(RSEQ_EVENT_SIGNAL_BIT, ¤t->rseq_event_mask);
|
|
__set_bit(RSEQ_EVENT_SIGNAL_BIT, ¤t->rseq_event_mask);
|
|
preempt_enable();
|
|
preempt_enable();
|
|
- rseq_handle_notify_resume(regs);
|
|
|
|
|
|
+ rseq_handle_notify_resume(ksig, regs);
|
|
}
|
|
}
|
|
|
|
|
|
/* rseq_preempt() requires preemption to be disabled. */
|
|
/* rseq_preempt() requires preemption to be disabled. */
|
|
@@ -1861,10 +1863,12 @@ static inline void rseq_execve(struct task_struct *t)
|
|
static inline void rseq_set_notify_resume(struct task_struct *t)
|
|
static inline void rseq_set_notify_resume(struct task_struct *t)
|
|
{
|
|
{
|
|
}
|
|
}
|
|
-static inline void rseq_handle_notify_resume(struct pt_regs *regs)
|
|
|
|
|
|
+static inline void rseq_handle_notify_resume(struct ksignal *ksig,
|
|
|
|
+ struct pt_regs *regs)
|
|
{
|
|
{
|
|
}
|
|
}
|
|
-static inline void rseq_signal_deliver(struct pt_regs *regs)
|
|
|
|
|
|
+static inline void rseq_signal_deliver(struct ksignal *ksig,
|
|
|
|
+ struct pt_regs *regs)
|
|
{
|
|
{
|
|
}
|
|
}
|
|
static inline void rseq_preempt(struct task_struct *t)
|
|
static inline void rseq_preempt(struct task_struct *t)
|