| .. | .. |
|---|
| 28 | 28 | #include <linux/tracehook.h> |
|---|
| 29 | 29 | #include <asm/ucontext.h> |
|---|
| 30 | 30 | #include <linux/uaccess.h> |
|---|
| 31 | | -#include <asm/pgtable.h> |
|---|
| 32 | 31 | #include <asm/cacheflush.h> |
|---|
| 33 | 32 | #include <asm/syscalls.h> |
|---|
| 34 | 33 | #include <asm/fpu.h> |
|---|
| .. | .. |
|---|
| 160 | 159 | /* Always make any pending restarted system calls return -EINTR */ |
|---|
| 161 | 160 | current->restart_block.fn = do_no_restart_syscall; |
|---|
| 162 | 161 | |
|---|
| 163 | | - if (!access_ok(VERIFY_READ, frame, sizeof(*frame))) |
|---|
| 162 | + if (!access_ok(frame, sizeof(*frame))) |
|---|
| 164 | 163 | goto badframe; |
|---|
| 165 | 164 | |
|---|
| 166 | 165 | if (__get_user(set.sig[0], &frame->sc.oldmask) |
|---|
| .. | .. |
|---|
| 176 | 175 | return r0; |
|---|
| 177 | 176 | |
|---|
| 178 | 177 | badframe: |
|---|
| 179 | | - force_sig(SIGSEGV, current); |
|---|
| 178 | + force_sig(SIGSEGV); |
|---|
| 180 | 179 | return 0; |
|---|
| 181 | 180 | } |
|---|
| 182 | 181 | |
|---|
| .. | .. |
|---|
| 190 | 189 | /* Always make any pending restarted system calls return -EINTR */ |
|---|
| 191 | 190 | current->restart_block.fn = do_no_restart_syscall; |
|---|
| 192 | 191 | |
|---|
| 193 | | - if (!access_ok(VERIFY_READ, frame, sizeof(*frame))) |
|---|
| 192 | + if (!access_ok(frame, sizeof(*frame))) |
|---|
| 194 | 193 | goto badframe; |
|---|
| 195 | 194 | |
|---|
| 196 | 195 | if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set))) |
|---|
| .. | .. |
|---|
| 207 | 206 | return r0; |
|---|
| 208 | 207 | |
|---|
| 209 | 208 | badframe: |
|---|
| 210 | | - force_sig(SIGSEGV, current); |
|---|
| 209 | + force_sig(SIGSEGV); |
|---|
| 211 | 210 | return 0; |
|---|
| 212 | 211 | } |
|---|
| 213 | 212 | |
|---|
| .. | .. |
|---|
| 272 | 271 | |
|---|
| 273 | 272 | frame = get_sigframe(&ksig->ka, regs->regs[15], sizeof(*frame)); |
|---|
| 274 | 273 | |
|---|
| 275 | | - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) |
|---|
| 274 | + if (!access_ok(frame, sizeof(*frame))) |
|---|
| 276 | 275 | return -EFAULT; |
|---|
| 277 | 276 | |
|---|
| 278 | 277 | err |= setup_sigcontext(&frame->sc, regs, set->sig[0]); |
|---|
| .. | .. |
|---|
| 338 | 337 | |
|---|
| 339 | 338 | frame = get_sigframe(&ksig->ka, regs->regs[15], sizeof(*frame)); |
|---|
| 340 | 339 | |
|---|
| 341 | | - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) |
|---|
| 340 | + if (!access_ok(frame, sizeof(*frame))) |
|---|
| 342 | 341 | return -EFAULT; |
|---|
| 343 | 342 | |
|---|
| 344 | 343 | err |= copy_siginfo_to_user(&frame->info, &ksig->info); |
|---|
| .. | .. |
|---|
| 419 | 418 | case -ERESTARTSYS: |
|---|
| 420 | 419 | if (!(sa->sa_flags & SA_RESTART)) |
|---|
| 421 | 420 | goto no_system_call_restart; |
|---|
| 422 | | - /* fallthrough */ |
|---|
| 421 | + fallthrough; |
|---|
| 423 | 422 | case -ERESTARTNOINTR: |
|---|
| 424 | 423 | regs->regs[0] = save_r0; |
|---|
| 425 | 424 | regs->pc -= instruction_size(__raw_readw(regs->pc - 4)); |
|---|
| .. | .. |
|---|
| 500 | 499 | unsigned long thread_info_flags) |
|---|
| 501 | 500 | { |
|---|
| 502 | 501 | /* deal with pending signal delivery */ |
|---|
| 503 | | - if (thread_info_flags & _TIF_SIGPENDING) |
|---|
| 502 | + if (thread_info_flags & (_TIF_SIGPENDING | _TIF_NOTIFY_SIGNAL)) |
|---|
| 504 | 503 | do_signal(regs, save_r0); |
|---|
| 505 | 504 | |
|---|
| 506 | | - if (thread_info_flags & _TIF_NOTIFY_RESUME) { |
|---|
| 507 | | - clear_thread_flag(TIF_NOTIFY_RESUME); |
|---|
| 505 | + if (thread_info_flags & _TIF_NOTIFY_RESUME) |
|---|
| 508 | 506 | tracehook_notify_resume(regs); |
|---|
| 509 | | - } |
|---|
| 510 | 507 | } |
|---|