diff options
Diffstat (limited to 'kernel/rseq.c')
-rw-r--r-- | kernel/rseq.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/kernel/rseq.c b/kernel/rseq.c index ae306f90c514..22b6acf1ad63 100644 --- a/kernel/rseq.c +++ b/kernel/rseq.c | |||
@@ -251,10 +251,10 @@ static int rseq_ip_fixup(struct pt_regs *regs) | |||
251 | * respect to other threads scheduled on the same CPU, and with respect | 251 | * respect to other threads scheduled on the same CPU, and with respect |
252 | * to signal handlers. | 252 | * to signal handlers. |
253 | */ | 253 | */ |
254 | void __rseq_handle_notify_resume(struct pt_regs *regs) | 254 | void __rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) |
255 | { | 255 | { |
256 | struct task_struct *t = current; | 256 | struct task_struct *t = current; |
257 | int ret; | 257 | int ret, sig; |
258 | 258 | ||
259 | if (unlikely(t->flags & PF_EXITING)) | 259 | if (unlikely(t->flags & PF_EXITING)) |
260 | return; | 260 | return; |
@@ -268,7 +268,8 @@ void __rseq_handle_notify_resume(struct pt_regs *regs) | |||
268 | return; | 268 | return; |
269 | 269 | ||
270 | error: | 270 | error: |
271 | force_sig(SIGSEGV, t); | 271 | sig = ksig ? ksig->sig : 0; |
272 | force_sigsegv(sig, t); | ||
272 | } | 273 | } |
273 | 274 | ||
274 | #ifdef CONFIG_DEBUG_RSEQ | 275 | #ifdef CONFIG_DEBUG_RSEQ |