| .. | .. |
|---|
| 289 | 289 | unaligned_addr += shift; |
|---|
| 290 | 290 | |
|---|
| 291 | 291 | if (load) { |
|---|
| 292 | | - if (!access_ok(VERIFY_READ, (void *)unaligned_addr, len)) |
|---|
| 292 | + if (!access_ok((void *)unaligned_addr, len)) |
|---|
| 293 | 293 | return -EACCES; |
|---|
| 294 | 294 | |
|---|
| 295 | 295 | get_data(unaligned_addr, &target_val, len); |
|---|
| 296 | 296 | *idx_to_addr(regs, target_idx) = target_val; |
|---|
| 297 | 297 | } else { |
|---|
| 298 | | - if (!access_ok(VERIFY_WRITE, (void *)unaligned_addr, len)) |
|---|
| 298 | + if (!access_ok((void *)unaligned_addr, len)) |
|---|
| 299 | 299 | return -EACCES; |
|---|
| 300 | 300 | target_val = *idx_to_addr(regs, target_idx); |
|---|
| 301 | 301 | set_data((void *)unaligned_addr, target_val, len); |
|---|
| .. | .. |
|---|
| 479 | 479 | |
|---|
| 480 | 480 | if (load) { |
|---|
| 481 | 481 | |
|---|
| 482 | | - if (!access_ok(VERIFY_READ, (void *)unaligned_addr, len)) |
|---|
| 482 | + if (!access_ok((void *)unaligned_addr, len)) |
|---|
| 483 | 483 | return -EACCES; |
|---|
| 484 | 484 | |
|---|
| 485 | 485 | get_data(unaligned_addr, &target_val, len); |
|---|
| .. | .. |
|---|
| 491 | 491 | *idx_to_addr(regs, RT(inst)) = target_val; |
|---|
| 492 | 492 | } else { |
|---|
| 493 | 493 | |
|---|
| 494 | | - if (!access_ok(VERIFY_WRITE, (void *)unaligned_addr, len)) |
|---|
| 494 | + if (!access_ok((void *)unaligned_addr, len)) |
|---|
| 495 | 495 | return -EACCES; |
|---|
| 496 | 496 | |
|---|
| 497 | 497 | target_val = *idx_to_addr(regs, RT(inst)); |
|---|
| .. | .. |
|---|
| 512 | 512 | { |
|---|
| 513 | 513 | unsigned long inst; |
|---|
| 514 | 514 | int ret = -EFAULT; |
|---|
| 515 | | - mm_segment_t seg = get_fs(); |
|---|
| 515 | + mm_segment_t seg; |
|---|
| 516 | 516 | |
|---|
| 517 | 517 | inst = get_inst(regs->ipc); |
|---|
| 518 | 518 | |
|---|
| .. | .. |
|---|
| 520 | 520 | "Faulting addr: 0x%08lx, pc: 0x%08lx [inst: 0x%08lx ]\n", addr, |
|---|
| 521 | 521 | regs->ipc, inst); |
|---|
| 522 | 522 | |
|---|
| 523 | | - set_fs(USER_DS); |
|---|
| 524 | | - |
|---|
| 523 | + seg = force_uaccess_begin(); |
|---|
| 525 | 524 | if (inst & NDS32_16BIT_INSTRUCTION) |
|---|
| 526 | 525 | ret = do_16((inst >> 16) & 0xffff, regs); |
|---|
| 527 | 526 | else |
|---|
| 528 | 527 | ret = do_32(inst, regs); |
|---|
| 529 | | - set_fs(seg); |
|---|
| 528 | + force_uaccess_end(seg); |
|---|
| 530 | 529 | |
|---|
| 531 | 530 | return ret; |
|---|
| 532 | 531 | } |
|---|