diff options
Diffstat (limited to 'kernel/rseq.c')
-rw-r--r-- | kernel/rseq.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/rseq.c b/kernel/rseq.c index c6242d8594dc..25e9a7b60eba 100644 --- a/kernel/rseq.c +++ b/kernel/rseq.c | |||
@@ -267,7 +267,7 @@ void __rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) | |||
267 | 267 | ||
268 | if (unlikely(t->flags & PF_EXITING)) | 268 | if (unlikely(t->flags & PF_EXITING)) |
269 | return; | 269 | return; |
270 | if (unlikely(!access_ok(VERIFY_WRITE, t->rseq, sizeof(*t->rseq)))) | 270 | if (unlikely(!access_ok(t->rseq, sizeof(*t->rseq)))) |
271 | goto error; | 271 | goto error; |
272 | ret = rseq_ip_fixup(regs); | 272 | ret = rseq_ip_fixup(regs); |
273 | if (unlikely(ret < 0)) | 273 | if (unlikely(ret < 0)) |
@@ -295,7 +295,7 @@ void rseq_syscall(struct pt_regs *regs) | |||
295 | 295 | ||
296 | if (!t->rseq) | 296 | if (!t->rseq) |
297 | return; | 297 | return; |
298 | if (!access_ok(VERIFY_READ, t->rseq, sizeof(*t->rseq)) || | 298 | if (!access_ok(t->rseq, sizeof(*t->rseq)) || |
299 | rseq_get_rseq_cs(t, &rseq_cs) || in_rseq_cs(ip, &rseq_cs)) | 299 | rseq_get_rseq_cs(t, &rseq_cs) || in_rseq_cs(ip, &rseq_cs)) |
300 | force_sig(SIGSEGV, t); | 300 | force_sig(SIGSEGV, t); |
301 | } | 301 | } |
@@ -351,7 +351,7 @@ SYSCALL_DEFINE4(rseq, struct rseq __user *, rseq, u32, rseq_len, | |||
351 | if (!IS_ALIGNED((unsigned long)rseq, __alignof__(*rseq)) || | 351 | if (!IS_ALIGNED((unsigned long)rseq, __alignof__(*rseq)) || |
352 | rseq_len != sizeof(*rseq)) | 352 | rseq_len != sizeof(*rseq)) |
353 | return -EINVAL; | 353 | return -EINVAL; |
354 | if (!access_ok(VERIFY_WRITE, rseq, rseq_len)) | 354 | if (!access_ok(rseq, rseq_len)) |
355 | return -EFAULT; | 355 | return -EFAULT; |
356 | current->rseq = rseq; | 356 | current->rseq = rseq; |
357 | current->rseq_len = rseq_len; | 357 | current->rseq_len = rseq_len; |