Re: [PATCH] Remove 'type' argument from access_ok() function

From: Guenter Roeck
Date: Fri Jan 04 2019 - 12:42:56 EST


On Thu, Jan 03, 2019 at 06:57:57PM -0800, Linus Torvalds wrote:
> Nobody has actually used the type (VERIFY_READ vs VERIFY_WRITE) argument
> of the user address range verification function since we got rid of the
> old racy i386-only code to walk page tables by hand.
>
> It existed because the original 80386 would not honor the write protect
> bit when in kernel mode, so you had to do COW by hand before doing any
> user access. But we haven't supported that in a long time, and these
> days the 'type' argument is a purely historical artifact.
>
> A discussion about extending 'user_access_begin()' to do the range
> checking resulted this patch, because there is no way we're going to
> move the old VERIFY_xyz interface to that model. And it's best done at
> the end of the merge window when I've done most of my merges, so let's
> just get this done once and for all.
>
> This patch was mostly done with a sed-script, with manual fix-ups for
> the cases that weren't of the trivial 'access_ok(VERIFY_xyz' form.
>
> There were a couple of notable cases:
>
> - csky still had the old "verify_area()" name as an alias.
>
> - the iter_iov code had magical hardcoded knowledge of the actual
> values of VERIFY_{READ,WRITE} (not that they mattered, since nothing
> really used it)
>
> - microblaze used the type argument for a debug printout
>
> but other than those oddities this should be a total no-op patch.
>
> I tried to fix up all architectures, did fairly extensive grepping for
> access_ok() uses, and the changes are trivial, but I may have missed
> something. Any missed conversion should be trivially fixable, though.
>
> Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>

sparc32_defconfig:

In file included from ./include/linux/kernel.h:10:0,
from ./include/linux/plist.h:78,
from ./include/linux/pm_qos.h:8,
from kernel/power/qos.c:32:
./include/linux/uaccess.h: In function '_copy_from_user':
./arch/sparc/include/asm/uaccess_32.h:43:12: error: 'type' undeclared

... and this is just the very first build I happened to try this morning.

I triggered a complete test run and will send another note when I get the
results. I guess 0day will start screaming if it didn't already do so.

Guenter

> ---
> arch/alpha/include/asm/futex.h | 2 +-
> arch/alpha/include/asm/uaccess.h | 2 +-
> arch/alpha/kernel/signal.c | 12 +--
> arch/alpha/lib/csum_partial_copy.c | 2 +-
> arch/arc/include/asm/futex.h | 2 +-
> arch/arc/kernel/process.c | 2 +-
> arch/arc/kernel/signal.c | 4 +-
> arch/arm/include/asm/futex.h | 4 +-
> arch/arm/include/asm/uaccess.h | 4 +-
> arch/arm/kernel/perf_callchain.c | 2 +-
> arch/arm/kernel/signal.c | 6 +-
> arch/arm/kernel/swp_emulate.c | 2 +-
> arch/arm/kernel/sys_oabi-compat.c | 4 +-
> arch/arm/kernel/traps.c | 2 +-
> arch/arm/oprofile/common.c | 2 +-
> arch/arm64/include/asm/futex.h | 2 +-
> arch/arm64/include/asm/uaccess.h | 8 +-
> arch/arm64/kernel/armv8_deprecated.c | 2 +-
> arch/arm64/kernel/perf_callchain.c | 4 +-
> arch/arm64/kernel/signal.c | 6 +-
> arch/arm64/kernel/signal32.c | 6 +-
> arch/arm64/kernel/sys_compat.c | 2 +-
> arch/c6x/kernel/signal.c | 4 +-
> arch/csky/abiv1/alignment.c | 4 +-
> arch/csky/include/asm/uaccess.h | 16 +---
> arch/csky/kernel/signal.c | 2 +-
> arch/csky/lib/usercopy.c | 8 +-
> arch/h8300/kernel/signal.c | 4 +-
> arch/hexagon/include/asm/futex.h | 2 +-
> arch/hexagon/include/asm/uaccess.h | 3 -
> arch/hexagon/kernel/signal.c | 4 +-
> arch/hexagon/mm/uaccess.c | 2 +-
> arch/ia64/include/asm/futex.h | 2 +-
> arch/ia64/include/asm/uaccess.h | 2 +-
> arch/ia64/kernel/ptrace.c | 4 +-
> arch/ia64/kernel/signal.c | 4 +-
> arch/m68k/include/asm/uaccess_mm.h | 2 +-
> arch/m68k/include/asm/uaccess_no.h | 2 +-
> arch/m68k/kernel/signal.c | 4 +-
> arch/microblaze/include/asm/futex.h | 2 +-
> arch/microblaze/include/asm/uaccess.h | 23 +++---
> arch/microblaze/kernel/signal.c | 4 +-
> arch/mips/include/asm/checksum.h | 4 +-
> arch/mips/include/asm/futex.h | 2 +-
> arch/mips/include/asm/termios.h | 4 +-
> arch/mips/include/asm/uaccess.h | 12 +--
> arch/mips/kernel/mips-r2-to-r6-emul.c | 24 +++---
> arch/mips/kernel/ptrace.c | 12 +--
> arch/mips/kernel/signal.c | 12 +--
> arch/mips/kernel/signal32.c | 4 +-
> arch/mips/kernel/signal_n32.c | 4 +-
> arch/mips/kernel/signal_o32.c | 8 +-
> arch/mips/kernel/syscall.c | 2 +-
> arch/mips/kernel/unaligned.c | 98 ++++++++++++-------------
> arch/mips/math-emu/cp1emu.c | 16 ++--
> arch/mips/mm/cache.c | 2 +-
> arch/mips/mm/gup.c | 3 +-
> arch/mips/oprofile/backtrace.c | 2 +-
> arch/mips/sibyte/common/sb_tbprof.c | 2 +-
> arch/nds32/include/asm/futex.h | 2 +-
> arch/nds32/include/asm/uaccess.h | 11 +--
> arch/nds32/kernel/perf_event_cpu.c | 11 ++-
> arch/nds32/kernel/signal.c | 4 +-
> arch/nds32/mm/alignment.c | 8 +-
> arch/nios2/include/asm/uaccess.h | 8 +-
> arch/nios2/kernel/signal.c | 2 +-
> arch/openrisc/include/asm/futex.h | 2 +-
> arch/openrisc/include/asm/uaccess.h | 8 +-
> arch/openrisc/kernel/signal.c | 6 +-
> arch/parisc/include/asm/futex.h | 2 +-
> arch/parisc/include/asm/uaccess.h | 2 +-
> arch/powerpc/include/asm/futex.h | 2 +-
> arch/powerpc/include/asm/uaccess.h | 8 +-
> arch/powerpc/kernel/align.c | 3 +-
> arch/powerpc/kernel/rtas_flash.c | 2 +-
> arch/powerpc/kernel/rtasd.c | 2 +-
> arch/powerpc/kernel/signal.c | 2 +-
> arch/powerpc/kernel/signal_32.c | 12 +--
> arch/powerpc/kernel/signal_64.c | 13 ++--
> arch/powerpc/kernel/syscalls.c | 2 +-
> arch/powerpc/kernel/traps.c | 2 +-
> arch/powerpc/kvm/book3s_64_mmu_hv.c | 4 +-
> arch/powerpc/lib/checksum_wrappers.c | 4 +-
> arch/powerpc/mm/fault.c | 2 +-
> arch/powerpc/mm/subpage-prot.c | 2 +-
> arch/powerpc/oprofile/backtrace.c | 4 +-
> arch/powerpc/platforms/cell/spufs/file.c | 16 ++--
> arch/powerpc/platforms/powernv/opal-lpc.c | 4 +-
> arch/powerpc/platforms/pseries/scanlog.c | 2 +-
> arch/riscv/include/asm/futex.h | 2 +-
> arch/riscv/include/asm/uaccess.h | 14 +---
> arch/riscv/kernel/signal.c | 4 +-
> arch/s390/include/asm/uaccess.h | 2 +-
> arch/sh/include/asm/checksum_32.h | 2 +-
> arch/sh/include/asm/futex.h | 2 +-
> arch/sh/include/asm/uaccess.h | 9 +--
> arch/sh/kernel/signal_32.c | 8 +-
> arch/sh/kernel/signal_64.c | 8 +-
> arch/sh/kernel/traps_64.c | 12 +--
> arch/sh/mm/gup.c | 3 +-
> arch/sh/oprofile/backtrace.c | 2 +-
> arch/sparc/include/asm/checksum_32.h | 2 +-
> arch/sparc/include/asm/uaccess_32.h | 2 +-
> arch/sparc/include/asm/uaccess_64.h | 2 +-
> arch/sparc/kernel/sigutil_32.c | 2 +-
> arch/sparc/kernel/unaligned_32.c | 7 +-
> arch/um/kernel/ptrace.c | 4 +-
> arch/unicore32/kernel/signal.c | 4 +-
> arch/x86/entry/vsyscall/vsyscall_64.c | 2 +-
> arch/x86/ia32/ia32_aout.c | 4 +-
> arch/x86/ia32/ia32_signal.c | 8 +-
> arch/x86/ia32/sys_ia32.c | 2 +-
> arch/x86/include/asm/checksum_32.h | 2 +-
> arch/x86/include/asm/pgtable_32.h | 2 +-
> arch/x86/include/asm/uaccess.h | 7 +-
> arch/x86/kernel/fpu/signal.c | 4 +-
> arch/x86/kernel/signal.c | 14 ++--
> arch/x86/kernel/stacktrace.c | 2 +-
> arch/x86/kernel/vm86_32.c | 4 +-
> arch/x86/lib/csum-wrappers_64.c | 4 +-
> arch/x86/lib/usercopy_32.c | 2 +-
> arch/x86/lib/usercopy_64.c | 2 +-
> arch/x86/math-emu/fpu_system.h | 4 +-
> arch/x86/math-emu/load_store.c | 6 +-
> arch/x86/math-emu/reg_ld_str.c | 48 ++++++------
> arch/x86/mm/mpx.c | 2 +-
> arch/x86/um/asm/checksum_32.h | 2 +-
> arch/x86/um/signal.c | 6 +-
> arch/xtensa/include/asm/checksum.h | 2 +-
> arch/xtensa/include/asm/futex.h | 2 +-
> arch/xtensa/include/asm/uaccess.h | 10 +--
> arch/xtensa/kernel/signal.c | 4 +-
> arch/xtensa/kernel/stacktrace.c | 2 +-
> drivers/acpi/acpi_dbg.c | 4 +-
> drivers/char/generic_nvram.c | 4 +-
> drivers/char/mem.c | 4 +-
> drivers/char/nwflash.c | 2 +-
> drivers/char/pcmcia/cm4000_cs.c | 4 +-
> drivers/crypto/ccp/psp-dev.c | 6 +-
> drivers/firewire/core-cdev.c | 2 +-
> drivers/firmware/efi/test/efi_test.c | 8 +-
> drivers/fpga/dfl-afu-dma-region.c | 2 +-
> drivers/fpga/dfl-fme-pr.c | 3 +-
> drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 18 ++---
> drivers/gpu/drm/armada/armada_gem.c | 2 +-
> drivers/gpu/drm/drm_file.c | 2 +-
> drivers/gpu/drm/etnaviv/etnaviv_drv.c | 8 +-
> drivers/gpu/drm/i915/i915_gem.c | 7 +-
> drivers/gpu/drm/i915/i915_gem_execbuffer.c | 6 +-
> drivers/gpu/drm/i915/i915_gem_userptr.c | 3 +-
> drivers/gpu/drm/i915/i915_ioc32.c | 2 +-
> drivers/gpu/drm/i915/i915_perf.c | 2 +-
> drivers/gpu/drm/i915/i915_query.c | 2 +-
> drivers/gpu/drm/msm/msm_gem_submit.c | 2 +-
> drivers/gpu/drm/qxl/qxl_ioctl.c | 3 +-
> drivers/infiniband/core/uverbs_main.c | 3 +-
> drivers/infiniband/hw/hfi1/user_exp_rcv.c | 2 +-
> drivers/infiniband/hw/qib/qib_file_ops.c | 2 +-
> drivers/macintosh/ans-lcd.c | 2 +-
> drivers/macintosh/via-pmu.c | 2 +-
> drivers/media/pci/ivtv/ivtvfb.c | 2 +-
> drivers/media/v4l2-core/v4l2-compat-ioctl32.c | 46 ++++++------
> drivers/misc/vmw_vmci/vmci_host.c | 2 +-
> drivers/pci/proc.c | 4 +-
> drivers/platform/goldfish/goldfish_pipe.c | 3 +-
> drivers/pnp/isapnp/proc.c | 2 +-
> drivers/scsi/pmcraid.c | 4 +-
> drivers/scsi/scsi_ioctl.c | 2 +-
> drivers/scsi/sg.c | 16 ++--
> drivers/staging/comedi/comedi_compat32.c | 24 +++---
> drivers/tty/n_hdlc.c | 2 +-
> drivers/usb/core/devices.c | 2 +-
> drivers/usb/core/devio.c | 7 +-
> drivers/usb/gadget/function/f_hid.c | 4 +-
> drivers/usb/gadget/udc/atmel_usba_udc.c | 2 +-
> drivers/vhost/vhost.c | 16 ++--
> drivers/video/fbdev/amifb.c | 4 +-
> drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c | 2 +-
> drivers/xen/privcmd.c | 6 +-
> fs/binfmt_aout.c | 4 +-
> fs/btrfs/send.c | 2 +-
> fs/eventpoll.c | 2 +-
> fs/fat/dir.c | 4 +-
> fs/ioctl.c | 2 +-
> fs/namespace.c | 2 +-
> fs/ocfs2/dlmfs/dlmfs.c | 4 +-
> fs/pstore/pmsg.c | 2 +-
> fs/pstore/ram_core.c | 2 +-
> fs/read_write.c | 13 ++--
> fs/readdir.c | 10 +--
> fs/select.c | 11 +--
> include/asm-generic/uaccess.h | 12 +--
> include/linux/regset.h | 4 +-
> include/linux/uaccess.h | 9 +--
> include/net/checksum.h | 4 +-
> kernel/bpf/syscall.c | 2 +-
> kernel/compat.c | 16 ++--
> kernel/events/core.c | 2 +-
> kernel/exit.c | 4 +-
> kernel/futex.c | 35 +++++----
> kernel/printk/printk.c | 4 +-
> kernel/ptrace.c | 4 +-
> kernel/rseq.c | 6 +-
> kernel/sched/core.c | 4 +-
> kernel/signal.c | 8 +-
> kernel/sys.c | 2 +-
> kernel/trace/bpf_trace.c | 2 +-
> lib/bitmap.c | 4 +-
> lib/iov_iter.c | 8 +-
> lib/usercopy.c | 4 +-
> mm/gup.c | 6 +-
> mm/mincore.c | 4 +-
> net/batman-adv/icmp_socket.c | 2 +-
> net/batman-adv/log.c | 2 +-
> net/compat.c | 30 ++++----
> net/sunrpc/sysctl.c | 2 +-
> security/tomoyo/common.c | 2 +-
> sound/core/seq/seq_clientmgr.c | 2 +-
> sound/isa/sb/emu8000_patch.c | 4 +-
> tools/perf/util/include/asm/uaccess.h | 2 +-
> virt/kvm/kvm_main.c | 3 +-
> 221 files changed, 610 insertions(+), 679 deletions(-)
>
> diff --git a/arch/alpha/include/asm/futex.h b/arch/alpha/include/asm/futex.h
> index ca3322536f72..bfd3c01038f8 100644
> --- a/arch/alpha/include/asm/futex.h
> +++ b/arch/alpha/include/asm/futex.h
> @@ -68,7 +68,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
> int ret = 0, cmp;
> u32 prev;
>
> - if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
> + if (!access_ok(uaddr, sizeof(u32)))
> return -EFAULT;
>
> __asm__ __volatile__ (
> diff --git a/arch/alpha/include/asm/uaccess.h b/arch/alpha/include/asm/uaccess.h
> index 87d8c4f0307d..e69c4e13c328 100644
> --- a/arch/alpha/include/asm/uaccess.h
> +++ b/arch/alpha/include/asm/uaccess.h
> @@ -36,7 +36,7 @@
> #define __access_ok(addr, size) \
> ((get_fs().seg & (addr | size | (addr+size))) == 0)
>
> -#define access_ok(type, addr, size) \
> +#define access_ok(addr, size) \
> ({ \
> __chk_user_ptr(addr); \
> __access_ok(((unsigned long)(addr)), (size)); \
> diff --git a/arch/alpha/kernel/signal.c b/arch/alpha/kernel/signal.c
> index 8c0c4ee0be6e..33e904a05881 100644
> --- a/arch/alpha/kernel/signal.c
> +++ b/arch/alpha/kernel/signal.c
> @@ -65,7 +65,7 @@ SYSCALL_DEFINE3(osf_sigaction, int, sig,
>
> if (act) {
> old_sigset_t mask;
> - if (!access_ok(VERIFY_READ, act, sizeof(*act)) ||
> + if (!access_ok(act, sizeof(*act)) ||
> __get_user(new_ka.sa.sa_handler, &act->sa_handler) ||
> __get_user(new_ka.sa.sa_flags, &act->sa_flags) ||
> __get_user(mask, &act->sa_mask))
> @@ -77,7 +77,7 @@ SYSCALL_DEFINE3(osf_sigaction, int, sig,
> ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
>
> if (!ret && oact) {
> - if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) ||
> + if (!access_ok(oact, sizeof(*oact)) ||
> __put_user(old_ka.sa.sa_handler, &oact->sa_handler) ||
> __put_user(old_ka.sa.sa_flags, &oact->sa_flags) ||
> __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask))
> @@ -207,7 +207,7 @@ do_sigreturn(struct sigcontext __user *sc)
> sigset_t set;
>
> /* Verify that it's a good sigcontext before using it */
> - if (!access_ok(VERIFY_READ, sc, sizeof(*sc)))
> + if (!access_ok(sc, sizeof(*sc)))
> goto give_sigsegv;
> if (__get_user(set.sig[0], &sc->sc_mask))
> goto give_sigsegv;
> @@ -235,7 +235,7 @@ do_rt_sigreturn(struct rt_sigframe __user *frame)
> sigset_t set;
>
> /* Verify that it's a good ucontext_t before using it */
> - if (!access_ok(VERIFY_READ, &frame->uc, sizeof(frame->uc)))
> + if (!access_ok(&frame->uc, sizeof(frame->uc)))
> goto give_sigsegv;
> if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
> goto give_sigsegv;
> @@ -332,7 +332,7 @@ setup_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs)
>
> oldsp = rdusp();
> frame = get_sigframe(ksig, oldsp, sizeof(*frame));
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> return -EFAULT;
>
> err |= setup_sigcontext(&frame->sc, regs, set->sig[0], oldsp);
> @@ -377,7 +377,7 @@ setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs)
>
> oldsp = rdusp();
> frame = get_sigframe(ksig, oldsp, sizeof(*frame));
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> return -EFAULT;
>
> err |= copy_siginfo_to_user(&frame->info, &ksig->info);
> diff --git a/arch/alpha/lib/csum_partial_copy.c b/arch/alpha/lib/csum_partial_copy.c
> index ddb9c2f376fa..e53f96e8aa6d 100644
> --- a/arch/alpha/lib/csum_partial_copy.c
> +++ b/arch/alpha/lib/csum_partial_copy.c
> @@ -333,7 +333,7 @@ csum_partial_copy_from_user(const void __user *src, void *dst, int len,
> unsigned long doff = 7 & (unsigned long) dst;
>
> if (len) {
> - if (!access_ok(VERIFY_READ, src, len)) {
> + if (!access_ok(src, len)) {
> if (errp) *errp = -EFAULT;
> memset(dst, 0, len);
> return sum;
> diff --git a/arch/arc/include/asm/futex.h b/arch/arc/include/asm/futex.h
> index eb887dd13e74..c29c3fae6854 100644
> --- a/arch/arc/include/asm/futex.h
> +++ b/arch/arc/include/asm/futex.h
> @@ -126,7 +126,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, u32 expval,
> int ret = 0;
> u32 existval;
>
> - if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
> + if (!access_ok(uaddr, sizeof(u32)))
> return -EFAULT;
>
> #ifndef CONFIG_ARC_HAS_LLSC
> diff --git a/arch/arc/kernel/process.c b/arch/arc/kernel/process.c
> index 8ce6e7235915..641c364fc232 100644
> --- a/arch/arc/kernel/process.c
> +++ b/arch/arc/kernel/process.c
> @@ -61,7 +61,7 @@ SYSCALL_DEFINE3(arc_usr_cmpxchg, int *, uaddr, int, expected, int, new)
> /* Z indicates to userspace if operation succeded */
> regs->status32 &= ~STATUS_Z_MASK;
>
> - ret = access_ok(VERIFY_WRITE, uaddr, sizeof(*uaddr));
> + ret = access_ok(uaddr, sizeof(*uaddr));
> if (!ret)
> goto fail;
>
> diff --git a/arch/arc/kernel/signal.c b/arch/arc/kernel/signal.c
> index 48685445002e..1bfb7de696bd 100644
> --- a/arch/arc/kernel/signal.c
> +++ b/arch/arc/kernel/signal.c
> @@ -169,7 +169,7 @@ SYSCALL_DEFINE0(rt_sigreturn)
>
> sf = (struct rt_sigframe __force __user *)(regs->sp);
>
> - if (!access_ok(VERIFY_READ, sf, sizeof(*sf)))
> + if (!access_ok(sf, sizeof(*sf)))
> goto badframe;
>
> if (__get_user(magic, &sf->sigret_magic))
> @@ -219,7 +219,7 @@ static inline void __user *get_sigframe(struct ksignal *ksig,
> frame = (void __user *)((sp - framesize) & ~7);
>
> /* Check that we can actually write to the signal frame */
> - if (!access_ok(VERIFY_WRITE, frame, framesize))
> + if (!access_ok(frame, framesize))
> frame = NULL;
>
> return frame;
> diff --git a/arch/arm/include/asm/futex.h b/arch/arm/include/asm/futex.h
> index ffebe7b7a5b7..0a46676b4245 100644
> --- a/arch/arm/include/asm/futex.h
> +++ b/arch/arm/include/asm/futex.h
> @@ -50,7 +50,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
> int ret;
> u32 val;
>
> - if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
> + if (!access_ok(uaddr, sizeof(u32)))
> return -EFAULT;
>
> smp_mb();
> @@ -104,7 +104,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
> int ret = 0;
> u32 val;
>
> - if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
> + if (!access_ok(uaddr, sizeof(u32)))
> return -EFAULT;
>
> preempt_disable();
> diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h
> index c136eef8f690..27ed17ec45fe 100644
> --- a/arch/arm/include/asm/uaccess.h
> +++ b/arch/arm/include/asm/uaccess.h
> @@ -279,7 +279,7 @@ static inline void set_fs(mm_segment_t fs)
>
> #endif /* CONFIG_MMU */
>
> -#define access_ok(type, addr, size) (__range_ok(addr, size) == 0)
> +#define access_ok(addr, size) (__range_ok(addr, size) == 0)
>
> #define user_addr_max() \
> (uaccess_kernel() ? ~0UL : get_fs())
> @@ -560,7 +560,7 @@ raw_copy_to_user(void __user *to, const void *from, unsigned long n)
>
> static inline unsigned long __must_check clear_user(void __user *to, unsigned long n)
> {
> - if (access_ok(VERIFY_WRITE, to, n))
> + if (access_ok(to, n))
> n = __clear_user(to, n);
> return n;
> }
> diff --git a/arch/arm/kernel/perf_callchain.c b/arch/arm/kernel/perf_callchain.c
> index 08e43a32a693..3b69a76d341e 100644
> --- a/arch/arm/kernel/perf_callchain.c
> +++ b/arch/arm/kernel/perf_callchain.c
> @@ -37,7 +37,7 @@ user_backtrace(struct frame_tail __user *tail,
> struct frame_tail buftail;
> unsigned long err;
>
> - if (!access_ok(VERIFY_READ, tail, sizeof(buftail)))
> + if (!access_ok(tail, sizeof(buftail)))
> return NULL;
>
> pagefault_disable();
> diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c
> index b908382b69ff..76bb8de6bf6b 100644
> --- a/arch/arm/kernel/signal.c
> +++ b/arch/arm/kernel/signal.c
> @@ -241,7 +241,7 @@ asmlinkage int sys_sigreturn(struct pt_regs *regs)
>
> frame = (struct sigframe __user *)regs->ARM_sp;
>
> - if (!access_ok(VERIFY_READ, frame, sizeof (*frame)))
> + if (!access_ok(frame, sizeof (*frame)))
> goto badframe;
>
> if (restore_sigframe(regs, frame))
> @@ -271,7 +271,7 @@ asmlinkage int sys_rt_sigreturn(struct pt_regs *regs)
>
> frame = (struct rt_sigframe __user *)regs->ARM_sp;
>
> - if (!access_ok(VERIFY_READ, frame, sizeof (*frame)))
> + if (!access_ok(frame, sizeof (*frame)))
> goto badframe;
>
> if (restore_sigframe(regs, &frame->sig))
> @@ -355,7 +355,7 @@ get_sigframe(struct ksignal *ksig, struct pt_regs *regs, int framesize)
> /*
> * Check that we can actually write to the signal frame.
> */
> - if (!access_ok(VERIFY_WRITE, frame, framesize))
> + if (!access_ok(frame, framesize))
> frame = NULL;
>
> return frame;
> diff --git a/arch/arm/kernel/swp_emulate.c b/arch/arm/kernel/swp_emulate.c
> index a188d5e8ab7f..76f6e6a9736c 100644
> --- a/arch/arm/kernel/swp_emulate.c
> +++ b/arch/arm/kernel/swp_emulate.c
> @@ -198,7 +198,7 @@ static int swp_handler(struct pt_regs *regs, unsigned int instr)
> destreg, EXTRACT_REG_NUM(instr, RT2_OFFSET), data);
>
> /* Check access in reasonable access range for both SWP and SWPB */
> - if (!access_ok(VERIFY_WRITE, (address & ~3), 4)) {
> + if (!access_ok((address & ~3), 4)) {
> pr_debug("SWP{B} emulation: access to %p not allowed!\n",
> (void *)address);
> res = -EFAULT;
> diff --git a/arch/arm/kernel/sys_oabi-compat.c b/arch/arm/kernel/sys_oabi-compat.c
> index 40da0872170f..92ab36f38795 100644
> --- a/arch/arm/kernel/sys_oabi-compat.c
> +++ b/arch/arm/kernel/sys_oabi-compat.c
> @@ -285,7 +285,7 @@ asmlinkage long sys_oabi_epoll_wait(int epfd,
> maxevents > (INT_MAX/sizeof(*kbuf)) ||
> maxevents > (INT_MAX/sizeof(*events)))
> return -EINVAL;
> - if (!access_ok(VERIFY_WRITE, events, sizeof(*events) * maxevents))
> + if (!access_ok(events, sizeof(*events) * maxevents))
> return -EFAULT;
> kbuf = kmalloc_array(maxevents, sizeof(*kbuf), GFP_KERNEL);
> if (!kbuf)
> @@ -326,7 +326,7 @@ asmlinkage long sys_oabi_semtimedop(int semid,
>
> if (nsops < 1 || nsops > SEMOPM)
> return -EINVAL;
> - if (!access_ok(VERIFY_READ, tsops, sizeof(*tsops) * nsops))
> + if (!access_ok(tsops, sizeof(*tsops) * nsops))
> return -EFAULT;
> sops = kmalloc_array(nsops, sizeof(*sops), GFP_KERNEL);
> if (!sops)
> diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
> index 2d668cff8ef4..33af097c454b 100644
> --- a/arch/arm/kernel/traps.c
> +++ b/arch/arm/kernel/traps.c
> @@ -582,7 +582,7 @@ do_cache_op(unsigned long start, unsigned long end, int flags)
> if (end < start || flags)
> return -EINVAL;
>
> - if (!access_ok(VERIFY_READ, start, end - start))
> + if (!access_ok(start, end - start))
> return -EFAULT;
>
> return __do_cache_op(start, end);
> diff --git a/arch/arm/oprofile/common.c b/arch/arm/oprofile/common.c
> index cc649a1e46da..7cb3e0453fcd 100644
> --- a/arch/arm/oprofile/common.c
> +++ b/arch/arm/oprofile/common.c
> @@ -88,7 +88,7 @@ static struct frame_tail* user_backtrace(struct frame_tail *tail)
> struct frame_tail buftail[2];
>
> /* Also check accessibility of one struct frame_tail beyond */
> - if (!access_ok(VERIFY_READ, tail, sizeof(buftail)))
> + if (!access_ok(tail, sizeof(buftail)))
> return NULL;
> if (__copy_from_user_inatomic(buftail, tail, sizeof(buftail)))
> return NULL;
> diff --git a/arch/arm64/include/asm/futex.h b/arch/arm64/include/asm/futex.h
> index 07fe2479d310..cccb83ad7fa8 100644
> --- a/arch/arm64/include/asm/futex.h
> +++ b/arch/arm64/include/asm/futex.h
> @@ -96,7 +96,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *_uaddr,
> u32 val, tmp;
> u32 __user *uaddr;
>
> - if (!access_ok(VERIFY_WRITE, _uaddr, sizeof(u32)))
> + if (!access_ok(_uaddr, sizeof(u32)))
> return -EFAULT;
>
> uaddr = __uaccess_mask_ptr(_uaddr);
> diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h
> index ed252435fd92..547d7a0c9d05 100644
> --- a/arch/arm64/include/asm/uaccess.h
> +++ b/arch/arm64/include/asm/uaccess.h
> @@ -95,7 +95,7 @@ static inline unsigned long __range_ok(const void __user *addr, unsigned long si
> return ret;
> }
>
> -#define access_ok(type, addr, size) __range_ok(addr, size)
> +#define access_ok(addr, size) __range_ok(addr, size)
> #define user_addr_max get_fs
>
> #define _ASM_EXTABLE(from, to) \
> @@ -301,7 +301,7 @@ do { \
> ({ \
> __typeof__(*(ptr)) __user *__p = (ptr); \
> might_fault(); \
> - if (access_ok(VERIFY_READ, __p, sizeof(*__p))) { \
> + if (access_ok(__p, sizeof(*__p))) { \
> __p = uaccess_mask_ptr(__p); \
> __get_user_err((x), __p, (err)); \
> } else { \
> @@ -370,7 +370,7 @@ do { \
> ({ \
> __typeof__(*(ptr)) __user *__p = (ptr); \
> might_fault(); \
> - if (access_ok(VERIFY_WRITE, __p, sizeof(*__p))) { \
> + if (access_ok(__p, sizeof(*__p))) { \
> __p = uaccess_mask_ptr(__p); \
> __put_user_err((x), __p, (err)); \
> } else { \
> @@ -418,7 +418,7 @@ extern unsigned long __must_check __arch_copy_in_user(void __user *to, const voi
> extern unsigned long __must_check __arch_clear_user(void __user *to, unsigned long n);
> static inline unsigned long __must_check __clear_user(void __user *to, unsigned long n)
> {
> - if (access_ok(VERIFY_WRITE, to, n))
> + if (access_ok(to, n))
> n = __arch_clear_user(__uaccess_mask_ptr(to), n);
> return n;
> }
> diff --git a/arch/arm64/kernel/armv8_deprecated.c b/arch/arm64/kernel/armv8_deprecated.c
> index 92be1d12d590..e52e7280884a 100644
> --- a/arch/arm64/kernel/armv8_deprecated.c
> +++ b/arch/arm64/kernel/armv8_deprecated.c
> @@ -402,7 +402,7 @@ static int swp_handler(struct pt_regs *regs, u32 instr)
>
> /* Check access in reasonable access range for both SWP and SWPB */
> user_ptr = (const void __user *)(unsigned long)(address & ~3);
> - if (!access_ok(VERIFY_WRITE, user_ptr, 4)) {
> + if (!access_ok(user_ptr, 4)) {
> pr_debug("SWP{B} emulation: access to 0x%08x not allowed!\n",
> address);
> goto fault;
> diff --git a/arch/arm64/kernel/perf_callchain.c b/arch/arm64/kernel/perf_callchain.c
> index a34c26afacb0..61d983f5756f 100644
> --- a/arch/arm64/kernel/perf_callchain.c
> +++ b/arch/arm64/kernel/perf_callchain.c
> @@ -39,7 +39,7 @@ user_backtrace(struct frame_tail __user *tail,
> unsigned long lr;
>
> /* Also check accessibility of one struct frame_tail beyond */
> - if (!access_ok(VERIFY_READ, tail, sizeof(buftail)))
> + if (!access_ok(tail, sizeof(buftail)))
> return NULL;
>
> pagefault_disable();
> @@ -86,7 +86,7 @@ compat_user_backtrace(struct compat_frame_tail __user *tail,
> unsigned long err;
>
> /* Also check accessibility of one struct frame_tail beyond */
> - if (!access_ok(VERIFY_READ, tail, sizeof(buftail)))
> + if (!access_ok(tail, sizeof(buftail)))
> return NULL;
>
> pagefault_disable();
> diff --git a/arch/arm64/kernel/signal.c b/arch/arm64/kernel/signal.c
> index 5dcc942906db..867a7cea70e5 100644
> --- a/arch/arm64/kernel/signal.c
> +++ b/arch/arm64/kernel/signal.c
> @@ -470,7 +470,7 @@ static int parse_user_sigframe(struct user_ctxs *user,
> offset = 0;
> limit = extra_size;
>
> - if (!access_ok(VERIFY_READ, base, limit))
> + if (!access_ok(base, limit))
> goto invalid;
>
> continue;
> @@ -556,7 +556,7 @@ SYSCALL_DEFINE0(rt_sigreturn)
>
> frame = (struct rt_sigframe __user *)regs->sp;
>
> - if (!access_ok(VERIFY_READ, frame, sizeof (*frame)))
> + if (!access_ok(frame, sizeof (*frame)))
> goto badframe;
>
> if (restore_sigframe(regs, frame))
> @@ -730,7 +730,7 @@ static int get_sigframe(struct rt_sigframe_user_layout *user,
> /*
> * Check that we can actually write to the signal frame.
> */
> - if (!access_ok(VERIFY_WRITE, user->sigframe, sp_top - sp))
> + if (!access_ok(user->sigframe, sp_top - sp))
> return -EFAULT;
>
> return 0;
> diff --git a/arch/arm64/kernel/signal32.c b/arch/arm64/kernel/signal32.c
> index 24b09003f821..cb7800acd19f 100644
> --- a/arch/arm64/kernel/signal32.c
> +++ b/arch/arm64/kernel/signal32.c
> @@ -303,7 +303,7 @@ COMPAT_SYSCALL_DEFINE0(sigreturn)
>
> frame = (struct compat_sigframe __user *)regs->compat_sp;
>
> - if (!access_ok(VERIFY_READ, frame, sizeof (*frame)))
> + if (!access_ok(frame, sizeof (*frame)))
> goto badframe;
>
> if (compat_restore_sigframe(regs, frame))
> @@ -334,7 +334,7 @@ COMPAT_SYSCALL_DEFINE0(rt_sigreturn)
>
> frame = (struct compat_rt_sigframe __user *)regs->compat_sp;
>
> - if (!access_ok(VERIFY_READ, frame, sizeof (*frame)))
> + if (!access_ok(frame, sizeof (*frame)))
> goto badframe;
>
> if (compat_restore_sigframe(regs, &frame->sig))
> @@ -365,7 +365,7 @@ static void __user *compat_get_sigframe(struct ksignal *ksig,
> /*
> * Check that we can actually write to the signal frame.
> */
> - if (!access_ok(VERIFY_WRITE, frame, framesize))
> + if (!access_ok(frame, framesize))
> frame = NULL;
>
> return frame;
> diff --git a/arch/arm64/kernel/sys_compat.c b/arch/arm64/kernel/sys_compat.c
> index 32653d156747..21005dfe8406 100644
> --- a/arch/arm64/kernel/sys_compat.c
> +++ b/arch/arm64/kernel/sys_compat.c
> @@ -58,7 +58,7 @@ do_compat_cache_op(unsigned long start, unsigned long end, int flags)
> if (end < start || flags)
> return -EINVAL;
>
> - if (!access_ok(VERIFY_READ, (const void __user *)start, end - start))
> + if (!access_ok((const void __user *)start, end - start))
> return -EFAULT;
>
> return __do_compat_cache_op(start, end);
> diff --git a/arch/c6x/kernel/signal.c b/arch/c6x/kernel/signal.c
> index 3c4bb5a5c382..33b9f69c38f7 100644
> --- a/arch/c6x/kernel/signal.c
> +++ b/arch/c6x/kernel/signal.c
> @@ -80,7 +80,7 @@ asmlinkage int do_rt_sigreturn(struct pt_regs *regs)
>
> frame = (struct rt_sigframe __user *) ((unsigned long) regs->sp + 8);
>
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
> if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
> goto badframe;
> @@ -149,7 +149,7 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set,
>
> frame = get_sigframe(ksig, regs, sizeof(*frame));
>
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> return -EFAULT;
>
> err |= __put_user(&frame->info, &frame->pinfo);
> diff --git a/arch/csky/abiv1/alignment.c b/arch/csky/abiv1/alignment.c
> index 60205e98fb87..d789be36eb4f 100644
> --- a/arch/csky/abiv1/alignment.c
> +++ b/arch/csky/abiv1/alignment.c
> @@ -32,7 +32,7 @@ static int ldb_asm(uint32_t addr, uint32_t *valp)
> uint32_t val;
> int err;
>
> - if (!access_ok(VERIFY_READ, (void *)addr, 1))
> + if (!access_ok((void *)addr, 1))
> return 1;
>
> asm volatile (
> @@ -67,7 +67,7 @@ static int stb_asm(uint32_t addr, uint32_t val)
> {
> int err;
>
> - if (!access_ok(VERIFY_WRITE, (void *)addr, 1))
> + if (!access_ok((void *)addr, 1))
> return 1;
>
> asm volatile (
> diff --git a/arch/csky/include/asm/uaccess.h b/arch/csky/include/asm/uaccess.h
> index acaf0e210d81..eaa1c3403a42 100644
> --- a/arch/csky/include/asm/uaccess.h
> +++ b/arch/csky/include/asm/uaccess.h
> @@ -16,10 +16,7 @@
> #include <linux/version.h>
> #include <asm/segment.h>
>
> -#define VERIFY_READ 0
> -#define VERIFY_WRITE 1
> -
> -static inline int access_ok(int type, const void *addr, unsigned long size)
> +static inline int access_ok(const void *addr, unsigned long size)
> {
> unsigned long limit = current_thread_info()->addr_limit.seg;
>
> @@ -27,12 +24,7 @@ static inline int access_ok(int type, const void *addr, unsigned long size)
> ((unsigned long)(addr + size) < limit));
> }
>
> -static inline int verify_area(int type, const void *addr, unsigned long size)
> -{
> - return access_ok(type, addr, size) ? 0 : -EFAULT;
> -}
> -
> -#define __addr_ok(addr) (access_ok(VERIFY_READ, addr, 0))
> +#define __addr_ok(addr) (access_ok(addr, 0))
>
> extern int __put_user_bad(void);
>
> @@ -91,7 +83,7 @@ extern int __put_user_bad(void);
> long __pu_err = -EFAULT; \
> typeof(*(ptr)) *__pu_addr = (ptr); \
> typeof(*(ptr)) __pu_val = (typeof(*(ptr)))(x); \
> - if (access_ok(VERIFY_WRITE, __pu_addr, size) && __pu_addr) \
> + if (access_ok(__pu_addr, size) && __pu_addr) \
> __put_user_size(__pu_val, __pu_addr, (size), __pu_err); \
> __pu_err; \
> })
> @@ -217,7 +209,7 @@ do { \
> ({ \
> int __gu_err = -EFAULT; \
> const __typeof__(*(ptr)) __user *__gu_ptr = (ptr); \
> - if (access_ok(VERIFY_READ, __gu_ptr, size) && __gu_ptr) \
> + if (access_ok(__gu_ptr, size) && __gu_ptr) \
> __get_user_size(x, __gu_ptr, size, __gu_err); \
> __gu_err; \
> })
> diff --git a/arch/csky/kernel/signal.c b/arch/csky/kernel/signal.c
> index 66e1b729b10b..9967c10eee2b 100644
> --- a/arch/csky/kernel/signal.c
> +++ b/arch/csky/kernel/signal.c
> @@ -88,7 +88,7 @@ do_rt_sigreturn(void)
> struct pt_regs *regs = current_pt_regs();
> struct rt_sigframe *frame = (struct rt_sigframe *)(regs->usp);
>
> - if (verify_area(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
> if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
> goto badframe;
> diff --git a/arch/csky/lib/usercopy.c b/arch/csky/lib/usercopy.c
> index ac9170e2cbb8..647a23986fb5 100644
> --- a/arch/csky/lib/usercopy.c
> +++ b/arch/csky/lib/usercopy.c
> @@ -7,7 +7,7 @@
> unsigned long raw_copy_from_user(void *to, const void *from,
> unsigned long n)
> {
> - if (access_ok(VERIFY_READ, from, n))
> + if (access_ok(from, n))
> __copy_user_zeroing(to, from, n);
> else
> memset(to, 0, n);
> @@ -18,7 +18,7 @@ EXPORT_SYMBOL(raw_copy_from_user);
> unsigned long raw_copy_to_user(void *to, const void *from,
> unsigned long n)
> {
> - if (access_ok(VERIFY_WRITE, to, n))
> + if (access_ok(to, n))
> __copy_user(to, from, n);
> return n;
> }
> @@ -113,7 +113,7 @@ long strncpy_from_user(char *dst, const char *src, long count)
> {
> long res = -EFAULT;
>
> - if (access_ok(VERIFY_READ, src, 1))
> + if (access_ok(src, 1))
> __do_strncpy_from_user(dst, src, count, res);
> return res;
> }
> @@ -236,7 +236,7 @@ do { \
> unsigned long
> clear_user(void __user *to, unsigned long n)
> {
> - if (access_ok(VERIFY_WRITE, to, n))
> + if (access_ok(to, n))
> __do_clear_user(to, n);
> return n;
> }
> diff --git a/arch/h8300/kernel/signal.c b/arch/h8300/kernel/signal.c
> index 1e8070d08770..e0f2b708e5d9 100644
> --- a/arch/h8300/kernel/signal.c
> +++ b/arch/h8300/kernel/signal.c
> @@ -110,7 +110,7 @@ asmlinkage int sys_rt_sigreturn(void)
> sigset_t set;
> int er0;
>
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
> if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
> goto badframe;
> @@ -165,7 +165,7 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set,
>
> frame = get_sigframe(ksig, regs, sizeof(*frame));
>
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> return -EFAULT;
>
> if (ksig->ka.sa.sa_flags & SA_SIGINFO)
> diff --git a/arch/hexagon/include/asm/futex.h b/arch/hexagon/include/asm/futex.h
> index c889f5993ecd..cb635216a732 100644
> --- a/arch/hexagon/include/asm/futex.h
> +++ b/arch/hexagon/include/asm/futex.h
> @@ -77,7 +77,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, u32 oldval,
> int prev;
> int ret;
>
> - if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
> + if (!access_ok(uaddr, sizeof(u32)))
> return -EFAULT;
>
> __asm__ __volatile__ (
> diff --git a/arch/hexagon/include/asm/uaccess.h b/arch/hexagon/include/asm/uaccess.h
> index 458b69886b34..a30e58d5f351 100644
> --- a/arch/hexagon/include/asm/uaccess.h
> +++ b/arch/hexagon/include/asm/uaccess.h
> @@ -29,9 +29,6 @@
>
> /*
> * access_ok: - Checks if a user space pointer is valid
> - * @type: Type of access: %VERIFY_READ or %VERIFY_WRITE. Note that
> - * %VERIFY_WRITE is a superset of %VERIFY_READ - if it is safe
> - * to write to a block, it is always safe to read from it.
> * @addr: User space pointer to start of block to check
> * @size: Size of block to check
> *
> diff --git a/arch/hexagon/kernel/signal.c b/arch/hexagon/kernel/signal.c
> index 78aa7304a5c9..31e2cf95f189 100644
> --- a/arch/hexagon/kernel/signal.c
> +++ b/arch/hexagon/kernel/signal.c
> @@ -115,7 +115,7 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set,
>
> frame = get_sigframe(ksig, regs, sizeof(struct rt_sigframe));
>
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(struct rt_sigframe)))
> + if (!access_ok(frame, sizeof(struct rt_sigframe)))
> return -EFAULT;
>
> if (copy_siginfo_to_user(&frame->info, &ksig->info))
> @@ -244,7 +244,7 @@ asmlinkage int sys_rt_sigreturn(void)
> current->restart_block.fn = do_no_restart_syscall;
>
> frame = (struct rt_sigframe __user *)pt_psp(regs);
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
> if (__copy_from_user(&blocked, &frame->uc.uc_sigmask, sizeof(blocked)))
> goto badframe;
> diff --git a/arch/hexagon/mm/uaccess.c b/arch/hexagon/mm/uaccess.c
> index c599eb126c9e..6f9c4697552c 100644
> --- a/arch/hexagon/mm/uaccess.c
> +++ b/arch/hexagon/mm/uaccess.c
> @@ -51,7 +51,7 @@ __kernel_size_t __clear_user_hexagon(void __user *dest, unsigned long count)
>
> unsigned long clear_user_hexagon(void __user *dest, unsigned long count)
> {
> - if (!access_ok(VERIFY_WRITE, dest, count))
> + if (!access_ok(dest, count))
> return count;
> else
> return __clear_user_hexagon(dest, count);
> diff --git a/arch/ia64/include/asm/futex.h b/arch/ia64/include/asm/futex.h
> index db2dd85918c2..2e106d462196 100644
> --- a/arch/ia64/include/asm/futex.h
> +++ b/arch/ia64/include/asm/futex.h
> @@ -86,7 +86,7 @@ static inline int
> futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
> u32 oldval, u32 newval)
> {
> - if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
> + if (!access_ok(uaddr, sizeof(u32)))
> return -EFAULT;
>
> {
> diff --git a/arch/ia64/include/asm/uaccess.h b/arch/ia64/include/asm/uaccess.h
> index a74524f2d625..306d469e43da 100644
> --- a/arch/ia64/include/asm/uaccess.h
> +++ b/arch/ia64/include/asm/uaccess.h
> @@ -67,7 +67,7 @@ static inline int __access_ok(const void __user *p, unsigned long size)
> return likely(addr <= seg) &&
> (seg == KERNEL_DS.seg || likely(REGION_OFFSET(addr) < RGN_MAP_LIMIT));
> }
> -#define access_ok(type, addr, size) __access_ok((addr), (size))
> +#define access_ok(addr, size) __access_ok((addr), (size))
>
> /*
> * These are the main single-value transfer routines. They automatically
> diff --git a/arch/ia64/kernel/ptrace.c b/arch/ia64/kernel/ptrace.c
> index 427cd565fd61..6d50ede0ed69 100644
> --- a/arch/ia64/kernel/ptrace.c
> +++ b/arch/ia64/kernel/ptrace.c
> @@ -836,7 +836,7 @@ ptrace_getregs (struct task_struct *child, struct pt_all_user_regs __user *ppr)
> char nat = 0;
> int i;
>
> - if (!access_ok(VERIFY_WRITE, ppr, sizeof(struct pt_all_user_regs)))
> + if (!access_ok(ppr, sizeof(struct pt_all_user_regs)))
> return -EIO;
>
> pt = task_pt_regs(child);
> @@ -981,7 +981,7 @@ ptrace_setregs (struct task_struct *child, struct pt_all_user_regs __user *ppr)
>
> memset(&fpval, 0, sizeof(fpval));
>
> - if (!access_ok(VERIFY_READ, ppr, sizeof(struct pt_all_user_regs)))
> + if (!access_ok(ppr, sizeof(struct pt_all_user_regs)))
> return -EIO;
>
> pt = task_pt_regs(child);
> diff --git a/arch/ia64/kernel/signal.c b/arch/ia64/kernel/signal.c
> index 99099f73b207..6062fd14e34e 100644
> --- a/arch/ia64/kernel/signal.c
> +++ b/arch/ia64/kernel/signal.c
> @@ -132,7 +132,7 @@ ia64_rt_sigreturn (struct sigscratch *scr)
> */
> retval = (long) &ia64_strace_leave_kernel;
>
> - if (!access_ok(VERIFY_READ, sc, sizeof(*sc)))
> + if (!access_ok(sc, sizeof(*sc)))
> goto give_sigsegv;
>
> if (GET_SIGSET(&set, &sc->sc_mask))
> @@ -264,7 +264,7 @@ setup_frame(struct ksignal *ksig, sigset_t *set, struct sigscratch *scr)
> }
> frame = (void __user *) ((new_sp - sizeof(*frame)) & -STACK_ALIGN);
>
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) {
> + if (!access_ok(frame, sizeof(*frame))) {
> force_sigsegv(ksig->sig, current);
> return 1;
> }
> diff --git a/arch/m68k/include/asm/uaccess_mm.h b/arch/m68k/include/asm/uaccess_mm.h
> index c4cb889660aa..7e85de984df1 100644
> --- a/arch/m68k/include/asm/uaccess_mm.h
> +++ b/arch/m68k/include/asm/uaccess_mm.h
> @@ -10,7 +10,7 @@
> #include <asm/segment.h>
>
> /* We let the MMU do all checking */
> -static inline int access_ok(int type, const void __user *addr,
> +static inline int access_ok(const void __user *addr,
> unsigned long size)
> {
> return 1;
> diff --git a/arch/m68k/include/asm/uaccess_no.h b/arch/m68k/include/asm/uaccess_no.h
> index 892efb56beef..0134008bf539 100644
> --- a/arch/m68k/include/asm/uaccess_no.h
> +++ b/arch/m68k/include/asm/uaccess_no.h
> @@ -10,7 +10,7 @@
>
> #include <asm/segment.h>
>
> -#define access_ok(type,addr,size) _access_ok((unsigned long)(addr),(size))
> +#define access_ok(addr,size) _access_ok((unsigned long)(addr),(size))
>
> /*
> * It is not enough to just have access_ok check for a real RAM address.
> diff --git a/arch/m68k/kernel/signal.c b/arch/m68k/kernel/signal.c
> index 72850b85ecf8..e2a9421c5797 100644
> --- a/arch/m68k/kernel/signal.c
> +++ b/arch/m68k/kernel/signal.c
> @@ -787,7 +787,7 @@ asmlinkage int do_sigreturn(struct pt_regs *regs, struct switch_stack *sw)
> struct sigframe __user *frame = (struct sigframe __user *)(usp - 4);
> sigset_t set;
>
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
> if (__get_user(set.sig[0], &frame->sc.sc_mask) ||
> (_NSIG_WORDS > 1 &&
> @@ -812,7 +812,7 @@ asmlinkage int do_rt_sigreturn(struct pt_regs *regs, struct switch_stack *sw)
> struct rt_sigframe __user *frame = (struct rt_sigframe __user *)(usp - 4);
> sigset_t set;
>
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
> if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
> goto badframe;
> diff --git a/arch/microblaze/include/asm/futex.h b/arch/microblaze/include/asm/futex.h
> index 2572077b04ea..8c90357e5983 100644
> --- a/arch/microblaze/include/asm/futex.h
> +++ b/arch/microblaze/include/asm/futex.h
> @@ -71,7 +71,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
> int ret = 0, cmp;
> u32 prev;
>
> - if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
> + if (!access_ok(uaddr, sizeof(u32)))
> return -EFAULT;
>
> __asm__ __volatile__ ("1: lwx %1, %3, r0; \
> diff --git a/arch/microblaze/include/asm/uaccess.h b/arch/microblaze/include/asm/uaccess.h
> index 81f16aadbf9e..dbfea093a7c7 100644
> --- a/arch/microblaze/include/asm/uaccess.h
> +++ b/arch/microblaze/include/asm/uaccess.h
> @@ -60,26 +60,25 @@ static inline int ___range_ok(unsigned long addr, unsigned long size)
> #define __range_ok(addr, size) \
> ___range_ok((unsigned long)(addr), (unsigned long)(size))
>
> -#define access_ok(type, addr, size) (__range_ok((addr), (size)) == 0)
> +#define access_ok(addr, size) (__range_ok((addr), (size)) == 0)
>
> #else
>
> -static inline int access_ok(int type, const void __user *addr,
> - unsigned long size)
> +static inline int access_ok(const void __user *addr, unsigned long size)
> {
> if (!size)
> goto ok;
>
> if ((get_fs().seg < ((unsigned long)addr)) ||
> (get_fs().seg < ((unsigned long)addr + size - 1))) {
> - pr_devel("ACCESS fail: %s at 0x%08x (size 0x%x), seg 0x%08x\n",
> - type ? "WRITE" : "READ ", (__force u32)addr, (u32)size,
> + pr_devel("ACCESS fail at 0x%08x (size 0x%x), seg 0x%08x\n",
> + (__force u32)addr, (u32)size,
> (u32)get_fs().seg);
> return 0;
> }
> ok:
> - pr_devel("ACCESS OK: %s at 0x%08x (size 0x%x), seg 0x%08x\n",
> - type ? "WRITE" : "READ ", (__force u32)addr, (u32)size,
> + pr_devel("ACCESS OK at 0x%08x (size 0x%x), seg 0x%08x\n",
> + (__force u32)addr, (u32)size,
> (u32)get_fs().seg);
> return 1;
> }
> @@ -120,7 +119,7 @@ static inline unsigned long __must_check clear_user(void __user *to,
> unsigned long n)
> {
> might_fault();
> - if (unlikely(!access_ok(VERIFY_WRITE, to, n)))
> + if (unlikely(!access_ok(to, n)))
> return n;
>
> return __clear_user(to, n);
> @@ -174,7 +173,7 @@ extern long __user_bad(void);
> const typeof(*(ptr)) __user *__gu_addr = (ptr); \
> int __gu_err = 0; \
> \
> - if (access_ok(VERIFY_READ, __gu_addr, size)) { \
> + if (access_ok(__gu_addr, size)) { \
> switch (size) { \
> case 1: \
> __get_user_asm("lbu", __gu_addr, __gu_val, \
> @@ -286,7 +285,7 @@ extern long __user_bad(void);
> typeof(*(ptr)) __user *__pu_addr = (ptr); \
> int __pu_err = 0; \
> \
> - if (access_ok(VERIFY_WRITE, __pu_addr, size)) { \
> + if (access_ok(__pu_addr, size)) { \
> switch (size) { \
> case 1: \
> __put_user_asm("sb", __pu_addr, __pu_val, \
> @@ -358,7 +357,7 @@ extern int __strncpy_user(char *to, const char __user *from, int len);
> static inline long
> strncpy_from_user(char *dst, const char __user *src, long count)
> {
> - if (!access_ok(VERIFY_READ, src, 1))
> + if (!access_ok(src, 1))
> return -EFAULT;
> return __strncpy_user(dst, src, count);
> }
> @@ -372,7 +371,7 @@ extern int __strnlen_user(const char __user *sstr, int len);
>
> static inline long strnlen_user(const char __user *src, long n)
> {
> - if (!access_ok(VERIFY_READ, src, 1))
> + if (!access_ok(src, 1))
> return 0;
> return __strnlen_user(src, n);
> }
> diff --git a/arch/microblaze/kernel/signal.c b/arch/microblaze/kernel/signal.c
> index 97001524ca2d..0685696349bb 100644
> --- a/arch/microblaze/kernel/signal.c
> +++ b/arch/microblaze/kernel/signal.c
> @@ -91,7 +91,7 @@ asmlinkage long sys_rt_sigreturn(struct pt_regs *regs)
> /* Always make any pending restarted system calls return -EINTR */
> current->restart_block.fn = do_no_restart_syscall;
>
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
>
> if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
> @@ -166,7 +166,7 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set,
>
> frame = get_sigframe(ksig, regs, sizeof(*frame));
>
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> return -EFAULT;
>
> if (ksig->ka.sa.sa_flags & SA_SIGINFO)
> diff --git a/arch/mips/include/asm/checksum.h b/arch/mips/include/asm/checksum.h
> index e8161e4dfde7..dcebaaf8c862 100644
> --- a/arch/mips/include/asm/checksum.h
> +++ b/arch/mips/include/asm/checksum.h
> @@ -63,7 +63,7 @@ static inline
> __wsum csum_and_copy_from_user(const void __user *src, void *dst,
> int len, __wsum sum, int *err_ptr)
> {
> - if (access_ok(VERIFY_READ, src, len))
> + if (access_ok(src, len))
> return csum_partial_copy_from_user(src, dst, len, sum,
> err_ptr);
> if (len)
> @@ -81,7 +81,7 @@ __wsum csum_and_copy_to_user(const void *src, void __user *dst, int len,
> __wsum sum, int *err_ptr)
> {
> might_fault();
> - if (access_ok(VERIFY_WRITE, dst, len)) {
> + if (access_ok(dst, len)) {
> if (uaccess_kernel())
> return __csum_partial_copy_kernel(src,
> (__force void *)dst,
> diff --git a/arch/mips/include/asm/futex.h b/arch/mips/include/asm/futex.h
> index 8eff134b3a43..c14d798f3888 100644
> --- a/arch/mips/include/asm/futex.h
> +++ b/arch/mips/include/asm/futex.h
> @@ -129,7 +129,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
> int ret = 0;
> u32 val;
>
> - if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
> + if (!access_ok(uaddr, sizeof(u32)))
> return -EFAULT;
>
> if (cpu_has_llsc && R10000_LLSC_WAR) {
> diff --git a/arch/mips/include/asm/termios.h b/arch/mips/include/asm/termios.h
> index ce2d72e34274..bc29eeacc55a 100644
> --- a/arch/mips/include/asm/termios.h
> +++ b/arch/mips/include/asm/termios.h
> @@ -32,7 +32,7 @@ static inline int user_termio_to_kernel_termios(struct ktermios *termios,
> unsigned short iflag, oflag, cflag, lflag;
> unsigned int err;
>
> - if (!access_ok(VERIFY_READ, termio, sizeof(struct termio)))
> + if (!access_ok(termio, sizeof(struct termio)))
> return -EFAULT;
>
> err = __get_user(iflag, &termio->c_iflag);
> @@ -61,7 +61,7 @@ static inline int kernel_termios_to_user_termio(struct termio __user *termio,
> {
> int err;
>
> - if (!access_ok(VERIFY_WRITE, termio, sizeof(struct termio)))
> + if (!access_ok(termio, sizeof(struct termio)))
> return -EFAULT;
>
> err = __put_user(termios->c_iflag, &termio->c_iflag);
> diff --git a/arch/mips/include/asm/uaccess.h b/arch/mips/include/asm/uaccess.h
> index 06629011a434..d43c1dc6ef15 100644
> --- a/arch/mips/include/asm/uaccess.h
> +++ b/arch/mips/include/asm/uaccess.h
> @@ -109,9 +109,6 @@ static inline bool eva_kernel_access(void)
>
> /*
> * access_ok: - Checks if a user space pointer is valid
> - * @type: Type of access: %VERIFY_READ or %VERIFY_WRITE. Note that
> - * %VERIFY_WRITE is a superset of %VERIFY_READ - if it is safe
> - * to write to a block, it is always safe to read from it.
> * @addr: User space pointer to start of block to check
> * @size: Size of block to check
> *
> @@ -134,7 +131,7 @@ static inline int __access_ok(const void __user *p, unsigned long size)
> return (get_fs().seg & (addr | (addr + size) | __ua_size(size))) == 0;
> }
>
> -#define access_ok(type, addr, size) \
> +#define access_ok(addr, size) \
> likely(__access_ok((addr), (size)))
>
> /*
> @@ -304,7 +301,7 @@ do { \
> const __typeof__(*(ptr)) __user * __gu_ptr = (ptr); \
> \
> might_fault(); \
> - if (likely(access_ok(VERIFY_READ, __gu_ptr, size))) { \
> + if (likely(access_ok( __gu_ptr, size))) { \
> if (eva_kernel_access()) \
> __get_kernel_common((x), size, __gu_ptr); \
> else \
> @@ -446,7 +443,7 @@ do { \
> int __pu_err = -EFAULT; \
> \
> might_fault(); \
> - if (likely(access_ok(VERIFY_WRITE, __pu_addr, size))) { \
> + if (likely(access_ok( __pu_addr, size))) { \
> if (eva_kernel_access()) \
> __put_kernel_common(__pu_addr, size); \
> else \
> @@ -691,8 +688,7 @@ __clear_user(void __user *addr, __kernel_size_t size)
> ({ \
> void __user * __cl_addr = (addr); \
> unsigned long __cl_size = (n); \
> - if (__cl_size && access_ok(VERIFY_WRITE, \
> - __cl_addr, __cl_size)) \
> + if (__cl_size && access_ok(__cl_addr, __cl_size)) \
> __cl_size = __clear_user(__cl_addr, __cl_size); \
> __cl_size; \
> })
> diff --git a/arch/mips/kernel/mips-r2-to-r6-emul.c b/arch/mips/kernel/mips-r2-to-r6-emul.c
> index cb22a558431e..c50c89a978f1 100644
> --- a/arch/mips/kernel/mips-r2-to-r6-emul.c
> +++ b/arch/mips/kernel/mips-r2-to-r6-emul.c
> @@ -1205,7 +1205,7 @@ int mipsr2_decoder(struct pt_regs *regs, u32 inst, unsigned long *fcr31)
> case lwl_op:
> rt = regs->regs[MIPSInst_RT(inst)];
> vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst);
> - if (!access_ok(VERIFY_READ, (void __user *)vaddr, 4)) {
> + if (!access_ok((void __user *)vaddr, 4)) {
> current->thread.cp0_baduaddr = vaddr;
> err = SIGSEGV;
> break;
> @@ -1278,7 +1278,7 @@ int mipsr2_decoder(struct pt_regs *regs, u32 inst, unsigned long *fcr31)
> case lwr_op:
> rt = regs->regs[MIPSInst_RT(inst)];
> vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst);
> - if (!access_ok(VERIFY_READ, (void __user *)vaddr, 4)) {
> + if (!access_ok((void __user *)vaddr, 4)) {
> current->thread.cp0_baduaddr = vaddr;
> err = SIGSEGV;
> break;
> @@ -1352,7 +1352,7 @@ int mipsr2_decoder(struct pt_regs *regs, u32 inst, unsigned long *fcr31)
> case swl_op:
> rt = regs->regs[MIPSInst_RT(inst)];
> vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst);
> - if (!access_ok(VERIFY_WRITE, (void __user *)vaddr, 4)) {
> + if (!access_ok((void __user *)vaddr, 4)) {
> current->thread.cp0_baduaddr = vaddr;
> err = SIGSEGV;
> break;
> @@ -1422,7 +1422,7 @@ int mipsr2_decoder(struct pt_regs *regs, u32 inst, unsigned long *fcr31)
> case swr_op:
> rt = regs->regs[MIPSInst_RT(inst)];
> vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst);
> - if (!access_ok(VERIFY_WRITE, (void __user *)vaddr, 4)) {
> + if (!access_ok((void __user *)vaddr, 4)) {
> current->thread.cp0_baduaddr = vaddr;
> err = SIGSEGV;
> break;
> @@ -1497,7 +1497,7 @@ int mipsr2_decoder(struct pt_regs *regs, u32 inst, unsigned long *fcr31)
>
> rt = regs->regs[MIPSInst_RT(inst)];
> vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst);
> - if (!access_ok(VERIFY_READ, (void __user *)vaddr, 8)) {
> + if (!access_ok((void __user *)vaddr, 8)) {
> current->thread.cp0_baduaddr = vaddr;
> err = SIGSEGV;
> break;
> @@ -1616,7 +1616,7 @@ int mipsr2_decoder(struct pt_regs *regs, u32 inst, unsigned long *fcr31)
>
> rt = regs->regs[MIPSInst_RT(inst)];
> vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst);
> - if (!access_ok(VERIFY_READ, (void __user *)vaddr, 8)) {
> + if (!access_ok((void __user *)vaddr, 8)) {
> current->thread.cp0_baduaddr = vaddr;
> err = SIGSEGV;
> break;
> @@ -1735,7 +1735,7 @@ int mipsr2_decoder(struct pt_regs *regs, u32 inst, unsigned long *fcr31)
>
> rt = regs->regs[MIPSInst_RT(inst)];
> vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst);
> - if (!access_ok(VERIFY_WRITE, (void __user *)vaddr, 8)) {
> + if (!access_ok((void __user *)vaddr, 8)) {
> current->thread.cp0_baduaddr = vaddr;
> err = SIGSEGV;
> break;
> @@ -1853,7 +1853,7 @@ int mipsr2_decoder(struct pt_regs *regs, u32 inst, unsigned long *fcr31)
>
> rt = regs->regs[MIPSInst_RT(inst)];
> vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst);
> - if (!access_ok(VERIFY_WRITE, (void __user *)vaddr, 8)) {
> + if (!access_ok((void __user *)vaddr, 8)) {
> current->thread.cp0_baduaddr = vaddr;
> err = SIGSEGV;
> break;
> @@ -1970,7 +1970,7 @@ int mipsr2_decoder(struct pt_regs *regs, u32 inst, unsigned long *fcr31)
> err = SIGBUS;
> break;
> }
> - if (!access_ok(VERIFY_READ, (void __user *)vaddr, 4)) {
> + if (!access_ok((void __user *)vaddr, 4)) {
> current->thread.cp0_baduaddr = vaddr;
> err = SIGBUS;
> break;
> @@ -2026,7 +2026,7 @@ int mipsr2_decoder(struct pt_regs *regs, u32 inst, unsigned long *fcr31)
> err = SIGBUS;
> break;
> }
> - if (!access_ok(VERIFY_WRITE, (void __user *)vaddr, 4)) {
> + if (!access_ok((void __user *)vaddr, 4)) {
> current->thread.cp0_baduaddr = vaddr;
> err = SIGBUS;
> break;
> @@ -2089,7 +2089,7 @@ int mipsr2_decoder(struct pt_regs *regs, u32 inst, unsigned long *fcr31)
> err = SIGBUS;
> break;
> }
> - if (!access_ok(VERIFY_READ, (void __user *)vaddr, 8)) {
> + if (!access_ok((void __user *)vaddr, 8)) {
> current->thread.cp0_baduaddr = vaddr;
> err = SIGBUS;
> break;
> @@ -2150,7 +2150,7 @@ int mipsr2_decoder(struct pt_regs *regs, u32 inst, unsigned long *fcr31)
> err = SIGBUS;
> break;
> }
> - if (!access_ok(VERIFY_WRITE, (void __user *)vaddr, 8)) {
> + if (!access_ok((void __user *)vaddr, 8)) {
> current->thread.cp0_baduaddr = vaddr;
> err = SIGBUS;
> break;
> diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c
> index ea54575255ea..0057c910bc2f 100644
> --- a/arch/mips/kernel/ptrace.c
> +++ b/arch/mips/kernel/ptrace.c
> @@ -71,7 +71,7 @@ int ptrace_getregs(struct task_struct *child, struct user_pt_regs __user *data)
> struct pt_regs *regs;
> int i;
>
> - if (!access_ok(VERIFY_WRITE, data, 38 * 8))
> + if (!access_ok(data, 38 * 8))
> return -EIO;
>
> regs = task_pt_regs(child);
> @@ -98,7 +98,7 @@ int ptrace_setregs(struct task_struct *child, struct user_pt_regs __user *data)
> struct pt_regs *regs;
> int i;
>
> - if (!access_ok(VERIFY_READ, data, 38 * 8))
> + if (!access_ok(data, 38 * 8))
> return -EIO;
>
> regs = task_pt_regs(child);
> @@ -125,7 +125,7 @@ int ptrace_get_watch_regs(struct task_struct *child,
>
> if (!cpu_has_watch || boot_cpu_data.watch_reg_use_cnt == 0)
> return -EIO;
> - if (!access_ok(VERIFY_WRITE, addr, sizeof(struct pt_watch_regs)))
> + if (!access_ok(addr, sizeof(struct pt_watch_regs)))
> return -EIO;
>
> #ifdef CONFIG_32BIT
> @@ -167,7 +167,7 @@ int ptrace_set_watch_regs(struct task_struct *child,
>
> if (!cpu_has_watch || boot_cpu_data.watch_reg_use_cnt == 0)
> return -EIO;
> - if (!access_ok(VERIFY_READ, addr, sizeof(struct pt_watch_regs)))
> + if (!access_ok(addr, sizeof(struct pt_watch_regs)))
> return -EIO;
> /* Check the values. */
> for (i = 0; i < boot_cpu_data.watch_reg_use_cnt; i++) {
> @@ -359,7 +359,7 @@ int ptrace_getfpregs(struct task_struct *child, __u32 __user *data)
> {
> int i;
>
> - if (!access_ok(VERIFY_WRITE, data, 33 * 8))
> + if (!access_ok(data, 33 * 8))
> return -EIO;
>
> if (tsk_used_math(child)) {
> @@ -385,7 +385,7 @@ int ptrace_setfpregs(struct task_struct *child, __u32 __user *data)
> u32 value;
> int i;
>
> - if (!access_ok(VERIFY_READ, data, 33 * 8))
> + if (!access_ok(data, 33 * 8))
> return -EIO;
>
> init_fp_ctx(child);
> diff --git a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c
> index d3a23758592c..d75337974ee9 100644
> --- a/arch/mips/kernel/signal.c
> +++ b/arch/mips/kernel/signal.c
> @@ -590,7 +590,7 @@ SYSCALL_DEFINE3(sigaction, int, sig, const struct sigaction __user *, act,
> if (act) {
> old_sigset_t mask;
>
> - if (!access_ok(VERIFY_READ, act, sizeof(*act)))
> + if (!access_ok(act, sizeof(*act)))
> return -EFAULT;
> err |= __get_user(new_ka.sa.sa_handler, &act->sa_handler);
> err |= __get_user(new_ka.sa.sa_flags, &act->sa_flags);
> @@ -604,7 +604,7 @@ SYSCALL_DEFINE3(sigaction, int, sig, const struct sigaction __user *, act,
> ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
>
> if (!ret && oact) {
> - if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)))
> + if (!access_ok(oact, sizeof(*oact)))
> return -EFAULT;
> err |= __put_user(old_ka.sa.sa_flags, &oact->sa_flags);
> err |= __put_user(old_ka.sa.sa_handler, &oact->sa_handler);
> @@ -630,7 +630,7 @@ asmlinkage void sys_sigreturn(void)
>
> regs = current_pt_regs();
> frame = (struct sigframe __user *)regs->regs[29];
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
> if (__copy_from_user(&blocked, &frame->sf_mask, sizeof(blocked)))
> goto badframe;
> @@ -667,7 +667,7 @@ asmlinkage void sys_rt_sigreturn(void)
>
> regs = current_pt_regs();
> frame = (struct rt_sigframe __user *)regs->regs[29];
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
> if (__copy_from_user(&set, &frame->rs_uc.uc_sigmask, sizeof(set)))
> goto badframe;
> @@ -705,7 +705,7 @@ static int setup_frame(void *sig_return, struct ksignal *ksig,
> int err = 0;
>
> frame = get_sigframe(ksig, regs, sizeof(*frame));
> - if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
> + if (!access_ok(frame, sizeof (*frame)))
> return -EFAULT;
>
> err |= setup_sigcontext(regs, &frame->sf_sc);
> @@ -744,7 +744,7 @@ static int setup_rt_frame(void *sig_return, struct ksignal *ksig,
> int err = 0;
>
> frame = get_sigframe(ksig, regs, sizeof(*frame));
> - if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
> + if (!access_ok(frame, sizeof (*frame)))
> return -EFAULT;
>
> /* Create siginfo. */
> diff --git a/arch/mips/kernel/signal32.c b/arch/mips/kernel/signal32.c
> index b5d9e1784aff..59b8965433c2 100644
> --- a/arch/mips/kernel/signal32.c
> +++ b/arch/mips/kernel/signal32.c
> @@ -46,7 +46,7 @@ SYSCALL_DEFINE3(32_sigaction, long, sig, const struct compat_sigaction __user *,
> old_sigset_t mask;
> s32 handler;
>
> - if (!access_ok(VERIFY_READ, act, sizeof(*act)))
> + if (!access_ok(act, sizeof(*act)))
> return -EFAULT;
> err |= __get_user(handler, &act->sa_handler);
> new_ka.sa.sa_handler = (void __user *)(s64)handler;
> @@ -61,7 +61,7 @@ SYSCALL_DEFINE3(32_sigaction, long, sig, const struct compat_sigaction __user *,
> ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
>
> if (!ret && oact) {
> - if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)))
> + if (!access_ok(oact, sizeof(*oact)))
> return -EFAULT;
> err |= __put_user(old_ka.sa.sa_flags, &oact->sa_flags);
> err |= __put_user((u32)(u64)old_ka.sa.sa_handler,
> diff --git a/arch/mips/kernel/signal_n32.c b/arch/mips/kernel/signal_n32.c
> index 8f65aaf9206d..c498b027823e 100644
> --- a/arch/mips/kernel/signal_n32.c
> +++ b/arch/mips/kernel/signal_n32.c
> @@ -73,7 +73,7 @@ asmlinkage void sysn32_rt_sigreturn(void)
>
> regs = current_pt_regs();
> frame = (struct rt_sigframe_n32 __user *)regs->regs[29];
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
> if (__copy_conv_sigset_from_user(&set, &frame->rs_uc.uc_sigmask))
> goto badframe;
> @@ -110,7 +110,7 @@ static int setup_rt_frame_n32(void *sig_return, struct ksignal *ksig,
> int err = 0;
>
> frame = get_sigframe(ksig, regs, sizeof(*frame));
> - if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
> + if (!access_ok(frame, sizeof (*frame)))
> return -EFAULT;
>
> /* Create siginfo. */
> diff --git a/arch/mips/kernel/signal_o32.c b/arch/mips/kernel/signal_o32.c
> index b6e3ddef48a0..df259618e834 100644
> --- a/arch/mips/kernel/signal_o32.c
> +++ b/arch/mips/kernel/signal_o32.c
> @@ -118,7 +118,7 @@ static int setup_frame_32(void *sig_return, struct ksignal *ksig,
> int err = 0;
>
> frame = get_sigframe(ksig, regs, sizeof(*frame));
> - if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
> + if (!access_ok(frame, sizeof (*frame)))
> return -EFAULT;
>
> err |= setup_sigcontext32(regs, &frame->sf_sc);
> @@ -160,7 +160,7 @@ asmlinkage void sys32_rt_sigreturn(void)
>
> regs = current_pt_regs();
> frame = (struct rt_sigframe32 __user *)regs->regs[29];
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
> if (__copy_conv_sigset_from_user(&set, &frame->rs_uc.uc_sigmask))
> goto badframe;
> @@ -197,7 +197,7 @@ static int setup_rt_frame_32(void *sig_return, struct ksignal *ksig,
> int err = 0;
>
> frame = get_sigframe(ksig, regs, sizeof(*frame));
> - if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
> + if (!access_ok(frame, sizeof (*frame)))
> return -EFAULT;
>
> /* Convert (siginfo_t -> compat_siginfo_t) and copy to user. */
> @@ -262,7 +262,7 @@ asmlinkage void sys32_sigreturn(void)
>
> regs = current_pt_regs();
> frame = (struct sigframe32 __user *)regs->regs[29];
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
> if (__copy_conv_sigset_from_user(&blocked, &frame->sf_mask))
> goto badframe;
> diff --git a/arch/mips/kernel/syscall.c b/arch/mips/kernel/syscall.c
> index 41a0db08cd37..b6dc78ad5d8c 100644
> --- a/arch/mips/kernel/syscall.c
> +++ b/arch/mips/kernel/syscall.c
> @@ -101,7 +101,7 @@ static inline int mips_atomic_set(unsigned long addr, unsigned long new)
> if (unlikely(addr & 3))
> return -EINVAL;
>
> - if (unlikely(!access_ok(VERIFY_WRITE, (const void __user *)addr, 4)))
> + if (unlikely(!access_ok((const void __user *)addr, 4)))
> return -EINVAL;
>
> if (cpu_has_llsc && R10000_LLSC_WAR) {
> diff --git a/arch/mips/kernel/unaligned.c b/arch/mips/kernel/unaligned.c
> index c60e7719ef77..595ca9c85111 100644
> --- a/arch/mips/kernel/unaligned.c
> +++ b/arch/mips/kernel/unaligned.c
> @@ -936,7 +936,7 @@ static void emulate_load_store_insn(struct pt_regs *regs,
> if (insn.dsp_format.func == lx_op) {
> switch (insn.dsp_format.op) {
> case lwx_op:
> - if (!access_ok(VERIFY_READ, addr, 4))
> + if (!access_ok(addr, 4))
> goto sigbus;
> LoadW(addr, value, res);
> if (res)
> @@ -945,7 +945,7 @@ static void emulate_load_store_insn(struct pt_regs *regs,
> regs->regs[insn.dsp_format.rd] = value;
> break;
> case lhx_op:
> - if (!access_ok(VERIFY_READ, addr, 2))
> + if (!access_ok(addr, 2))
> goto sigbus;
> LoadHW(addr, value, res);
> if (res)
> @@ -968,7 +968,7 @@ static void emulate_load_store_insn(struct pt_regs *regs,
> set_fs(USER_DS);
> switch (insn.spec3_format.func) {
> case lhe_op:
> - if (!access_ok(VERIFY_READ, addr, 2)) {
> + if (!access_ok(addr, 2)) {
> set_fs(seg);
> goto sigbus;
> }
> @@ -981,7 +981,7 @@ static void emulate_load_store_insn(struct pt_regs *regs,
> regs->regs[insn.spec3_format.rt] = value;
> break;
> case lwe_op:
> - if (!access_ok(VERIFY_READ, addr, 4)) {
> + if (!access_ok(addr, 4)) {
> set_fs(seg);
> goto sigbus;
> }
> @@ -994,7 +994,7 @@ static void emulate_load_store_insn(struct pt_regs *regs,
> regs->regs[insn.spec3_format.rt] = value;
> break;
> case lhue_op:
> - if (!access_ok(VERIFY_READ, addr, 2)) {
> + if (!access_ok(addr, 2)) {
> set_fs(seg);
> goto sigbus;
> }
> @@ -1007,7 +1007,7 @@ static void emulate_load_store_insn(struct pt_regs *regs,
> regs->regs[insn.spec3_format.rt] = value;
> break;
> case she_op:
> - if (!access_ok(VERIFY_WRITE, addr, 2)) {
> + if (!access_ok(addr, 2)) {
> set_fs(seg);
> goto sigbus;
> }
> @@ -1020,7 +1020,7 @@ static void emulate_load_store_insn(struct pt_regs *regs,
> }
> break;
> case swe_op:
> - if (!access_ok(VERIFY_WRITE, addr, 4)) {
> + if (!access_ok(addr, 4)) {
> set_fs(seg);
> goto sigbus;
> }
> @@ -1041,7 +1041,7 @@ static void emulate_load_store_insn(struct pt_regs *regs,
> #endif
> break;
> case lh_op:
> - if (!access_ok(VERIFY_READ, addr, 2))
> + if (!access_ok(addr, 2))
> goto sigbus;
>
> if (IS_ENABLED(CONFIG_EVA)) {
> @@ -1060,7 +1060,7 @@ static void emulate_load_store_insn(struct pt_regs *regs,
> break;
>
> case lw_op:
> - if (!access_ok(VERIFY_READ, addr, 4))
> + if (!access_ok(addr, 4))
> goto sigbus;
>
> if (IS_ENABLED(CONFIG_EVA)) {
> @@ -1079,7 +1079,7 @@ static void emulate_load_store_insn(struct pt_regs *regs,
> break;
>
> case lhu_op:
> - if (!access_ok(VERIFY_READ, addr, 2))
> + if (!access_ok(addr, 2))
> goto sigbus;
>
> if (IS_ENABLED(CONFIG_EVA)) {
> @@ -1106,7 +1106,7 @@ static void emulate_load_store_insn(struct pt_regs *regs,
> * would blow up, so for now we don't handle unaligned 64-bit
> * instructions on 32-bit kernels.
> */
> - if (!access_ok(VERIFY_READ, addr, 4))
> + if (!access_ok(addr, 4))
> goto sigbus;
>
> LoadWU(addr, value, res);
> @@ -1129,7 +1129,7 @@ static void emulate_load_store_insn(struct pt_regs *regs,
> * would blow up, so for now we don't handle unaligned 64-bit
> * instructions on 32-bit kernels.
> */
> - if (!access_ok(VERIFY_READ, addr, 8))
> + if (!access_ok(addr, 8))
> goto sigbus;
>
> LoadDW(addr, value, res);
> @@ -1144,7 +1144,7 @@ static void emulate_load_store_insn(struct pt_regs *regs,
> goto sigill;
>
> case sh_op:
> - if (!access_ok(VERIFY_WRITE, addr, 2))
> + if (!access_ok(addr, 2))
> goto sigbus;
>
> compute_return_epc(regs);
> @@ -1164,7 +1164,7 @@ static void emulate_load_store_insn(struct pt_regs *regs,
> break;
>
> case sw_op:
> - if (!access_ok(VERIFY_WRITE, addr, 4))
> + if (!access_ok(addr, 4))
> goto sigbus;
>
> compute_return_epc(regs);
> @@ -1192,7 +1192,7 @@ static void emulate_load_store_insn(struct pt_regs *regs,
> * would blow up, so for now we don't handle unaligned 64-bit
> * instructions on 32-bit kernels.
> */
> - if (!access_ok(VERIFY_WRITE, addr, 8))
> + if (!access_ok(addr, 8))
> goto sigbus;
>
> compute_return_epc(regs);
> @@ -1254,7 +1254,7 @@ static void emulate_load_store_insn(struct pt_regs *regs,
>
> switch (insn.msa_mi10_format.func) {
> case msa_ld_op:
> - if (!access_ok(VERIFY_READ, addr, sizeof(*fpr)))
> + if (!access_ok(addr, sizeof(*fpr)))
> goto sigbus;
>
> do {
> @@ -1290,7 +1290,7 @@ static void emulate_load_store_insn(struct pt_regs *regs,
> break;
>
> case msa_st_op:
> - if (!access_ok(VERIFY_WRITE, addr, sizeof(*fpr)))
> + if (!access_ok(addr, sizeof(*fpr)))
> goto sigbus;
>
> /*
> @@ -1463,7 +1463,7 @@ static void emulate_load_store_microMIPS(struct pt_regs *regs,
> if (reg == 31)
> goto sigbus;
>
> - if (!access_ok(VERIFY_READ, addr, 8))
> + if (!access_ok(addr, 8))
> goto sigbus;
>
> LoadW(addr, value, res);
> @@ -1482,7 +1482,7 @@ static void emulate_load_store_microMIPS(struct pt_regs *regs,
> if (reg == 31)
> goto sigbus;
>
> - if (!access_ok(VERIFY_WRITE, addr, 8))
> + if (!access_ok(addr, 8))
> goto sigbus;
>
> value = regs->regs[reg];
> @@ -1502,7 +1502,7 @@ static void emulate_load_store_microMIPS(struct pt_regs *regs,
> if (reg == 31)
> goto sigbus;
>
> - if (!access_ok(VERIFY_READ, addr, 16))
> + if (!access_ok(addr, 16))
> goto sigbus;
>
> LoadDW(addr, value, res);
> @@ -1525,7 +1525,7 @@ static void emulate_load_store_microMIPS(struct pt_regs *regs,
> if (reg == 31)
> goto sigbus;
>
> - if (!access_ok(VERIFY_WRITE, addr, 16))
> + if (!access_ok(addr, 16))
> goto sigbus;
>
> value = regs->regs[reg];
> @@ -1548,11 +1548,10 @@ static void emulate_load_store_microMIPS(struct pt_regs *regs,
> if ((rvar > 9) || !reg)
> goto sigill;
> if (reg & 0x10) {
> - if (!access_ok
> - (VERIFY_READ, addr, 4 * (rvar + 1)))
> + if (!access_ok(addr, 4 * (rvar + 1)))
> goto sigbus;
> } else {
> - if (!access_ok(VERIFY_READ, addr, 4 * rvar))
> + if (!access_ok(addr, 4 * rvar))
> goto sigbus;
> }
> if (rvar == 9)
> @@ -1585,11 +1584,10 @@ static void emulate_load_store_microMIPS(struct pt_regs *regs,
> if ((rvar > 9) || !reg)
> goto sigill;
> if (reg & 0x10) {
> - if (!access_ok
> - (VERIFY_WRITE, addr, 4 * (rvar + 1)))
> + if (!access_ok(addr, 4 * (rvar + 1)))
> goto sigbus;
> } else {
> - if (!access_ok(VERIFY_WRITE, addr, 4 * rvar))
> + if (!access_ok(addr, 4 * rvar))
> goto sigbus;
> }
> if (rvar == 9)
> @@ -1623,11 +1621,10 @@ static void emulate_load_store_microMIPS(struct pt_regs *regs,
> if ((rvar > 9) || !reg)
> goto sigill;
> if (reg & 0x10) {
> - if (!access_ok
> - (VERIFY_READ, addr, 8 * (rvar + 1)))
> + if (!access_ok(addr, 8 * (rvar + 1)))
> goto sigbus;
> } else {
> - if (!access_ok(VERIFY_READ, addr, 8 * rvar))
> + if (!access_ok(addr, 8 * rvar))
> goto sigbus;
> }
> if (rvar == 9)
> @@ -1665,11 +1662,10 @@ static void emulate_load_store_microMIPS(struct pt_regs *regs,
> if ((rvar > 9) || !reg)
> goto sigill;
> if (reg & 0x10) {
> - if (!access_ok
> - (VERIFY_WRITE, addr, 8 * (rvar + 1)))
> + if (!access_ok(addr, 8 * (rvar + 1)))
> goto sigbus;
> } else {
> - if (!access_ok(VERIFY_WRITE, addr, 8 * rvar))
> + if (!access_ok(addr, 8 * rvar))
> goto sigbus;
> }
> if (rvar == 9)
> @@ -1788,7 +1784,7 @@ static void emulate_load_store_microMIPS(struct pt_regs *regs,
> case mm_lwm16_op:
> reg = insn.mm16_m_format.rlist;
> rvar = reg + 1;
> - if (!access_ok(VERIFY_READ, addr, 4 * rvar))
> + if (!access_ok(addr, 4 * rvar))
> goto sigbus;
>
> for (i = 16; rvar; rvar--, i++) {
> @@ -1808,7 +1804,7 @@ static void emulate_load_store_microMIPS(struct pt_regs *regs,
> case mm_swm16_op:
> reg = insn.mm16_m_format.rlist;
> rvar = reg + 1;
> - if (!access_ok(VERIFY_WRITE, addr, 4 * rvar))
> + if (!access_ok(addr, 4 * rvar))
> goto sigbus;
>
> for (i = 16; rvar; rvar--, i++) {
> @@ -1862,7 +1858,7 @@ static void emulate_load_store_microMIPS(struct pt_regs *regs,
> }
>
> loadHW:
> - if (!access_ok(VERIFY_READ, addr, 2))
> + if (!access_ok(addr, 2))
> goto sigbus;
>
> LoadHW(addr, value, res);
> @@ -1872,7 +1868,7 @@ static void emulate_load_store_microMIPS(struct pt_regs *regs,
> goto success;
>
> loadHWU:
> - if (!access_ok(VERIFY_READ, addr, 2))
> + if (!access_ok(addr, 2))
> goto sigbus;
>
> LoadHWU(addr, value, res);
> @@ -1882,7 +1878,7 @@ static void emulate_load_store_microMIPS(struct pt_regs *regs,
> goto success;
>
> loadW:
> - if (!access_ok(VERIFY_READ, addr, 4))
> + if (!access_ok(addr, 4))
> goto sigbus;
>
> LoadW(addr, value, res);
> @@ -1900,7 +1896,7 @@ static void emulate_load_store_microMIPS(struct pt_regs *regs,
> * would blow up, so for now we don't handle unaligned 64-bit
> * instructions on 32-bit kernels.
> */
> - if (!access_ok(VERIFY_READ, addr, 4))
> + if (!access_ok(addr, 4))
> goto sigbus;
>
> LoadWU(addr, value, res);
> @@ -1922,7 +1918,7 @@ static void emulate_load_store_microMIPS(struct pt_regs *regs,
> * would blow up, so for now we don't handle unaligned 64-bit
> * instructions on 32-bit kernels.
> */
> - if (!access_ok(VERIFY_READ, addr, 8))
> + if (!access_ok(addr, 8))
> goto sigbus;
>
> LoadDW(addr, value, res);
> @@ -1936,7 +1932,7 @@ static void emulate_load_store_microMIPS(struct pt_regs *regs,
> goto sigill;
>
> storeHW:
> - if (!access_ok(VERIFY_WRITE, addr, 2))
> + if (!access_ok(addr, 2))
> goto sigbus;
>
> value = regs->regs[reg];
> @@ -1946,7 +1942,7 @@ static void emulate_load_store_microMIPS(struct pt_regs *regs,
> goto success;
>
> storeW:
> - if (!access_ok(VERIFY_WRITE, addr, 4))
> + if (!access_ok(addr, 4))
> goto sigbus;
>
> value = regs->regs[reg];
> @@ -1964,7 +1960,7 @@ static void emulate_load_store_microMIPS(struct pt_regs *regs,
> * would blow up, so for now we don't handle unaligned 64-bit
> * instructions on 32-bit kernels.
> */
> - if (!access_ok(VERIFY_WRITE, addr, 8))
> + if (!access_ok(addr, 8))
> goto sigbus;
>
> value = regs->regs[reg];
> @@ -2122,7 +2118,7 @@ static void emulate_load_store_MIPS16e(struct pt_regs *regs, void __user * addr)
> goto sigbus;
>
> case MIPS16e_lh_op:
> - if (!access_ok(VERIFY_READ, addr, 2))
> + if (!access_ok(addr, 2))
> goto sigbus;
>
> LoadHW(addr, value, res);
> @@ -2133,7 +2129,7 @@ static void emulate_load_store_MIPS16e(struct pt_regs *regs, void __user * addr)
> break;
>
> case MIPS16e_lhu_op:
> - if (!access_ok(VERIFY_READ, addr, 2))
> + if (!access_ok(addr, 2))
> goto sigbus;
>
> LoadHWU(addr, value, res);
> @@ -2146,7 +2142,7 @@ static void emulate_load_store_MIPS16e(struct pt_regs *regs, void __user * addr)
> case MIPS16e_lw_op:
> case MIPS16e_lwpc_op:
> case MIPS16e_lwsp_op:
> - if (!access_ok(VERIFY_READ, addr, 4))
> + if (!access_ok(addr, 4))
> goto sigbus;
>
> LoadW(addr, value, res);
> @@ -2165,7 +2161,7 @@ static void emulate_load_store_MIPS16e(struct pt_regs *regs, void __user * addr)
> * would blow up, so for now we don't handle unaligned 64-bit
> * instructions on 32-bit kernels.
> */
> - if (!access_ok(VERIFY_READ, addr, 4))
> + if (!access_ok(addr, 4))
> goto sigbus;
>
> LoadWU(addr, value, res);
> @@ -2189,7 +2185,7 @@ static void emulate_load_store_MIPS16e(struct pt_regs *regs, void __user * addr)
> * would blow up, so for now we don't handle unaligned 64-bit
> * instructions on 32-bit kernels.
> */
> - if (!access_ok(VERIFY_READ, addr, 8))
> + if (!access_ok(addr, 8))
> goto sigbus;
>
> LoadDW(addr, value, res);
> @@ -2204,7 +2200,7 @@ static void emulate_load_store_MIPS16e(struct pt_regs *regs, void __user * addr)
> goto sigill;
>
> case MIPS16e_sh_op:
> - if (!access_ok(VERIFY_WRITE, addr, 2))
> + if (!access_ok(addr, 2))
> goto sigbus;
>
> MIPS16e_compute_return_epc(regs, &oldinst);
> @@ -2217,7 +2213,7 @@ static void emulate_load_store_MIPS16e(struct pt_regs *regs, void __user * addr)
> case MIPS16e_sw_op:
> case MIPS16e_swsp_op:
> case MIPS16e_i8_op: /* actually - MIPS16e_swrasp_func */
> - if (!access_ok(VERIFY_WRITE, addr, 4))
> + if (!access_ok(addr, 4))
> goto sigbus;
>
> MIPS16e_compute_return_epc(regs, &oldinst);
> @@ -2237,7 +2233,7 @@ static void emulate_load_store_MIPS16e(struct pt_regs *regs, void __user * addr)
> * would blow up, so for now we don't handle unaligned 64-bit
> * instructions on 32-bit kernels.
> */
> - if (!access_ok(VERIFY_WRITE, addr, 8))
> + if (!access_ok(addr, 8))
> goto sigbus;
>
> MIPS16e_compute_return_epc(regs, &oldinst);
> diff --git a/arch/mips/math-emu/cp1emu.c b/arch/mips/math-emu/cp1emu.c
> index 82e2993c1a2c..e60e29078ef5 100644
> --- a/arch/mips/math-emu/cp1emu.c
> +++ b/arch/mips/math-emu/cp1emu.c
> @@ -1063,7 +1063,7 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
> MIPSInst_SIMM(ir));
> MIPS_FPU_EMU_INC_STATS(loads);
>
> - if (!access_ok(VERIFY_READ, dva, sizeof(u64))) {
> + if (!access_ok(dva, sizeof(u64))) {
> MIPS_FPU_EMU_INC_STATS(errors);
> *fault_addr = dva;
> return SIGBUS;
> @@ -1081,7 +1081,7 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
> MIPSInst_SIMM(ir));
> MIPS_FPU_EMU_INC_STATS(stores);
> DIFROMREG(dval, MIPSInst_RT(ir));
> - if (!access_ok(VERIFY_WRITE, dva, sizeof(u64))) {
> + if (!access_ok(dva, sizeof(u64))) {
> MIPS_FPU_EMU_INC_STATS(errors);
> *fault_addr = dva;
> return SIGBUS;
> @@ -1097,7 +1097,7 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
> wva = (u32 __user *) (xcp->regs[MIPSInst_RS(ir)] +
> MIPSInst_SIMM(ir));
> MIPS_FPU_EMU_INC_STATS(loads);
> - if (!access_ok(VERIFY_READ, wva, sizeof(u32))) {
> + if (!access_ok(wva, sizeof(u32))) {
> MIPS_FPU_EMU_INC_STATS(errors);
> *fault_addr = wva;
> return SIGBUS;
> @@ -1115,7 +1115,7 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
> MIPSInst_SIMM(ir));
> MIPS_FPU_EMU_INC_STATS(stores);
> SIFROMREG(wval, MIPSInst_RT(ir));
> - if (!access_ok(VERIFY_WRITE, wva, sizeof(u32))) {
> + if (!access_ok(wva, sizeof(u32))) {
> MIPS_FPU_EMU_INC_STATS(errors);
> *fault_addr = wva;
> return SIGBUS;
> @@ -1493,7 +1493,7 @@ static int fpux_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
> xcp->regs[MIPSInst_FT(ir)]);
>
> MIPS_FPU_EMU_INC_STATS(loads);
> - if (!access_ok(VERIFY_READ, va, sizeof(u32))) {
> + if (!access_ok(va, sizeof(u32))) {
> MIPS_FPU_EMU_INC_STATS(errors);
> *fault_addr = va;
> return SIGBUS;
> @@ -1513,7 +1513,7 @@ static int fpux_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
> MIPS_FPU_EMU_INC_STATS(stores);
>
> SIFROMREG(val, MIPSInst_FS(ir));
> - if (!access_ok(VERIFY_WRITE, va, sizeof(u32))) {
> + if (!access_ok(va, sizeof(u32))) {
> MIPS_FPU_EMU_INC_STATS(errors);
> *fault_addr = va;
> return SIGBUS;
> @@ -1590,7 +1590,7 @@ static int fpux_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
> xcp->regs[MIPSInst_FT(ir)]);
>
> MIPS_FPU_EMU_INC_STATS(loads);
> - if (!access_ok(VERIFY_READ, va, sizeof(u64))) {
> + if (!access_ok(va, sizeof(u64))) {
> MIPS_FPU_EMU_INC_STATS(errors);
> *fault_addr = va;
> return SIGBUS;
> @@ -1609,7 +1609,7 @@ static int fpux_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
>
> MIPS_FPU_EMU_INC_STATS(stores);
> DIFROMREG(val, MIPSInst_FS(ir));
> - if (!access_ok(VERIFY_WRITE, va, sizeof(u64))) {
> + if (!access_ok(va, sizeof(u64))) {
> MIPS_FPU_EMU_INC_STATS(errors);
> *fault_addr = va;
> return SIGBUS;
> diff --git a/arch/mips/mm/cache.c b/arch/mips/mm/cache.c
> index 70a523151ff3..55099fbff4e6 100644
> --- a/arch/mips/mm/cache.c
> +++ b/arch/mips/mm/cache.c
> @@ -76,7 +76,7 @@ SYSCALL_DEFINE3(cacheflush, unsigned long, addr, unsigned long, bytes,
> {
> if (bytes == 0)
> return 0;
> - if (!access_ok(VERIFY_WRITE, (void __user *) addr, bytes))
> + if (!access_ok((void __user *) addr, bytes))
> return -EFAULT;
>
> __flush_icache_user_range(addr, addr + bytes);
> diff --git a/arch/mips/mm/gup.c b/arch/mips/mm/gup.c
> index 5a4875cac1ec..0d14e0d8eacf 100644
> --- a/arch/mips/mm/gup.c
> +++ b/arch/mips/mm/gup.c
> @@ -195,8 +195,7 @@ int __get_user_pages_fast(unsigned long start, int nr_pages, int write,
> addr = start;
> len = (unsigned long) nr_pages << PAGE_SHIFT;
> end = start + len;
> - if (unlikely(!access_ok(write ? VERIFY_WRITE : VERIFY_READ,
> - (void __user *)start, len)))
> + if (unlikely(!access_ok((void __user *)start, len)))
> return 0;
>
> /*
> diff --git a/arch/mips/oprofile/backtrace.c b/arch/mips/oprofile/backtrace.c
> index 806fb798091f..07d98ba7f49e 100644
> --- a/arch/mips/oprofile/backtrace.c
> +++ b/arch/mips/oprofile/backtrace.c
> @@ -19,7 +19,7 @@ struct stackframe {
> static inline int get_mem(unsigned long addr, unsigned long *result)
> {
> unsigned long *address = (unsigned long *) addr;
> - if (!access_ok(VERIFY_READ, address, sizeof(unsigned long)))
> + if (!access_ok(address, sizeof(unsigned long)))
> return -1;
> if (__copy_from_user_inatomic(result, address, sizeof(unsigned long)))
> return -3;
> diff --git a/arch/mips/sibyte/common/sb_tbprof.c b/arch/mips/sibyte/common/sb_tbprof.c
> index 99c720be72d2..9ff26b0cd3b6 100644
> --- a/arch/mips/sibyte/common/sb_tbprof.c
> +++ b/arch/mips/sibyte/common/sb_tbprof.c
> @@ -458,7 +458,7 @@ static ssize_t sbprof_tb_read(struct file *filp, char *buf,
> char *dest = buf;
> long cur_off = *offp;
>
> - if (!access_ok(VERIFY_WRITE, buf, size))
> + if (!access_ok(buf, size))
> return -EFAULT;
>
> mutex_lock(&sbp.lock);
> diff --git a/arch/nds32/include/asm/futex.h b/arch/nds32/include/asm/futex.h
> index cb6cb91cfdf8..baf178bf1d0b 100644
> --- a/arch/nds32/include/asm/futex.h
> +++ b/arch/nds32/include/asm/futex.h
> @@ -40,7 +40,7 @@ futex_atomic_cmpxchg_inatomic(u32 * uval, u32 __user * uaddr,
> int ret = 0;
> u32 val, tmp, flags;
>
> - if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
> + if (!access_ok(uaddr, sizeof(u32)))
> return -EFAULT;
>
> smp_mb();
> diff --git a/arch/nds32/include/asm/uaccess.h b/arch/nds32/include/asm/uaccess.h
> index 362a32d9bd16..53dcb49b0b12 100644
> --- a/arch/nds32/include/asm/uaccess.h
> +++ b/arch/nds32/include/asm/uaccess.h
> @@ -13,9 +13,6 @@
> #include <asm/types.h>
> #include <linux/mm.h>
>
> -#define VERIFY_READ 0
> -#define VERIFY_WRITE 1
> -
> #define __asmeq(x, y) ".ifnc " x "," y " ; .err ; .endif\n\t"
>
> /*
> @@ -53,7 +50,7 @@ static inline void set_fs(mm_segment_t fs)
>
> #define __range_ok(addr, size) (size <= get_fs() && addr <= (get_fs() -size))
>
> -#define access_ok(type, addr, size) \
> +#define access_ok(addr, size) \
> __range_ok((unsigned long)addr, (unsigned long)size)
> /*
> * Single-value transfer routines. They automatically use the right
> @@ -94,7 +91,7 @@ static inline void set_fs(mm_segment_t fs)
> ({ \
> const __typeof__(*(ptr)) __user *__p = (ptr); \
> might_fault(); \
> - if (access_ok(VERIFY_READ, __p, sizeof(*__p))) { \
> + if (access_ok(__p, sizeof(*__p))) { \
> __get_user_err((x), __p, (err)); \
> } else { \
> (x) = 0; (err) = -EFAULT; \
> @@ -189,7 +186,7 @@ do { \
> ({ \
> __typeof__(*(ptr)) __user *__p = (ptr); \
> might_fault(); \
> - if (access_ok(VERIFY_WRITE, __p, sizeof(*__p))) { \
> + if (access_ok(__p, sizeof(*__p))) { \
> __put_user_err((x), __p, (err)); \
> } else { \
> (err) = -EFAULT; \
> @@ -279,7 +276,7 @@ extern unsigned long __arch_copy_to_user(void __user * to, const void *from,
> #define INLINE_COPY_TO_USER
> static inline unsigned long clear_user(void __user * to, unsigned long n)
> {
> - if (access_ok(VERIFY_WRITE, to, n))
> + if (access_ok(to, n))
> n = __arch_clear_user(to, n);
> return n;
> }
> diff --git a/arch/nds32/kernel/perf_event_cpu.c b/arch/nds32/kernel/perf_event_cpu.c
> index 5e00ce54d0ff..334c2a6cec23 100644
> --- a/arch/nds32/kernel/perf_event_cpu.c
> +++ b/arch/nds32/kernel/perf_event_cpu.c
> @@ -1306,7 +1306,7 @@ user_backtrace(struct perf_callchain_entry_ctx *entry, unsigned long fp)
> (unsigned long *)(fp - (unsigned long)sizeof(buftail));
>
> /* Check accessibility of one struct frame_tail beyond */
> - if (!access_ok(VERIFY_READ, user_frame_tail, sizeof(buftail)))
> + if (!access_ok(user_frame_tail, sizeof(buftail)))
> return 0;
> if (__copy_from_user_inatomic
> (&buftail, user_frame_tail, sizeof(buftail)))
> @@ -1332,7 +1332,7 @@ user_backtrace_opt_size(struct perf_callchain_entry_ctx *entry,
> (unsigned long *)(fp - (unsigned long)sizeof(buftail));
>
> /* Check accessibility of one struct frame_tail beyond */
> - if (!access_ok(VERIFY_READ, user_frame_tail, sizeof(buftail)))
> + if (!access_ok(user_frame_tail, sizeof(buftail)))
> return 0;
> if (__copy_from_user_inatomic
> (&buftail, user_frame_tail, sizeof(buftail)))
> @@ -1386,7 +1386,7 @@ perf_callchain_user(struct perf_callchain_entry_ctx *entry,
> user_frame_tail =
> (unsigned long *)(fp - (unsigned long)sizeof(fp));
>
> - if (!access_ok(VERIFY_READ, user_frame_tail, sizeof(fp)))
> + if (!access_ok(user_frame_tail, sizeof(fp)))
> return;
>
> if (__copy_from_user_inatomic
> @@ -1406,8 +1406,7 @@ perf_callchain_user(struct perf_callchain_entry_ctx *entry,
> (unsigned long *)(fp -
> (unsigned long)sizeof(buftail));
>
> - if (!access_ok
> - (VERIFY_READ, user_frame_tail, sizeof(buftail)))
> + if (!access_ok(user_frame_tail, sizeof(buftail)))
> return;
>
> if (__copy_from_user_inatomic
> @@ -1424,7 +1423,7 @@ perf_callchain_user(struct perf_callchain_entry_ctx *entry,
> (unsigned long *)(fp - (unsigned long)
> sizeof(buftail_opt_size));
>
> - if (!access_ok(VERIFY_READ, user_frame_tail,
> + if (!access_ok(user_frame_tail,
> sizeof(buftail_opt_size)))
> return;
>
> diff --git a/arch/nds32/kernel/signal.c b/arch/nds32/kernel/signal.c
> index 5b5be082cfa4..5f7660aa2d68 100644
> --- a/arch/nds32/kernel/signal.c
> +++ b/arch/nds32/kernel/signal.c
> @@ -151,7 +151,7 @@ asmlinkage long sys_rt_sigreturn(struct pt_regs *regs)
>
> frame = (struct rt_sigframe __user *)regs->sp;
>
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
>
> if (restore_sigframe(regs, frame))
> @@ -275,7 +275,7 @@ setup_rt_frame(struct ksignal *ksig, sigset_t * set, struct pt_regs *regs)
> get_sigframe(ksig, regs, sizeof(*frame));
> int err = 0;
>
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> return -EFAULT;
>
> __put_user_error(0, &frame->uc.uc_flags, err);
> diff --git a/arch/nds32/mm/alignment.c b/arch/nds32/mm/alignment.c
> index e1aed9dc692d..c8b9061a2ee3 100644
> --- a/arch/nds32/mm/alignment.c
> +++ b/arch/nds32/mm/alignment.c
> @@ -289,13 +289,13 @@ static inline int do_16(unsigned long inst, struct pt_regs *regs)
> unaligned_addr += shift;
>
> if (load) {
> - if (!access_ok(VERIFY_READ, (void *)unaligned_addr, len))
> + if (!access_ok((void *)unaligned_addr, len))
> return -EACCES;
>
> get_data(unaligned_addr, &target_val, len);
> *idx_to_addr(regs, target_idx) = target_val;
> } else {
> - if (!access_ok(VERIFY_WRITE, (void *)unaligned_addr, len))
> + if (!access_ok((void *)unaligned_addr, len))
> return -EACCES;
> target_val = *idx_to_addr(regs, target_idx);
> set_data((void *)unaligned_addr, target_val, len);
> @@ -479,7 +479,7 @@ static inline int do_32(unsigned long inst, struct pt_regs *regs)
>
> if (load) {
>
> - if (!access_ok(VERIFY_READ, (void *)unaligned_addr, len))
> + if (!access_ok((void *)unaligned_addr, len))
> return -EACCES;
>
> get_data(unaligned_addr, &target_val, len);
> @@ -491,7 +491,7 @@ static inline int do_32(unsigned long inst, struct pt_regs *regs)
> *idx_to_addr(regs, RT(inst)) = target_val;
> } else {
>
> - if (!access_ok(VERIFY_WRITE, (void *)unaligned_addr, len))
> + if (!access_ok((void *)unaligned_addr, len))
> return -EACCES;
>
> target_val = *idx_to_addr(regs, RT(inst));
> diff --git a/arch/nios2/include/asm/uaccess.h b/arch/nios2/include/asm/uaccess.h
> index dfa3c7cb30b4..e0ea10806491 100644
> --- a/arch/nios2/include/asm/uaccess.h
> +++ b/arch/nios2/include/asm/uaccess.h
> @@ -37,7 +37,7 @@
> (((signed long)(((long)get_fs().seg) & \
> ((long)(addr) | (((long)(addr)) + (len)) | (len)))) == 0)
>
> -#define access_ok(type, addr, len) \
> +#define access_ok(addr, len) \
> likely(__access_ok((unsigned long)(addr), (unsigned long)(len)))
>
> # define __EX_TABLE_SECTION ".section __ex_table,\"a\"\n"
> @@ -70,7 +70,7 @@ static inline unsigned long __must_check __clear_user(void __user *to,
> static inline unsigned long __must_check clear_user(void __user *to,
> unsigned long n)
> {
> - if (!access_ok(VERIFY_WRITE, to, n))
> + if (!access_ok(to, n))
> return n;
> return __clear_user(to, n);
> }
> @@ -142,7 +142,7 @@ do { \
> long __gu_err = -EFAULT; \
> const __typeof__(*(ptr)) __user *__gu_ptr = (ptr); \
> unsigned long __gu_val = 0; \
> - if (access_ok(VERIFY_READ, __gu_ptr, sizeof(*__gu_ptr))) \
> + if (access_ok( __gu_ptr, sizeof(*__gu_ptr))) \
> __get_user_common(__gu_val, sizeof(*__gu_ptr), \
> __gu_ptr, __gu_err); \
> (x) = (__force __typeof__(x))__gu_val; \
> @@ -168,7 +168,7 @@ do { \
> long __pu_err = -EFAULT; \
> __typeof__(*(ptr)) __user *__pu_ptr = (ptr); \
> __typeof__(*(ptr)) __pu_val = (__typeof(*ptr))(x); \
> - if (access_ok(VERIFY_WRITE, __pu_ptr, sizeof(*__pu_ptr))) { \
> + if (access_ok(__pu_ptr, sizeof(*__pu_ptr))) { \
> switch (sizeof(*__pu_ptr)) { \
> case 1: \
> __put_user_asm(__pu_val, "stb", __pu_ptr, __pu_err); \
> diff --git a/arch/nios2/kernel/signal.c b/arch/nios2/kernel/signal.c
> index 20662b0f6c9e..4a81876b6086 100644
> --- a/arch/nios2/kernel/signal.c
> +++ b/arch/nios2/kernel/signal.c
> @@ -106,7 +106,7 @@ asmlinkage int do_rt_sigreturn(struct switch_stack *sw)
> sigset_t set;
> int rval;
>
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
>
> if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
> diff --git a/arch/openrisc/include/asm/futex.h b/arch/openrisc/include/asm/futex.h
> index 618da4a1bffb..fe894e6331ae 100644
> --- a/arch/openrisc/include/asm/futex.h
> +++ b/arch/openrisc/include/asm/futex.h
> @@ -72,7 +72,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
> int ret = 0;
> u32 prev;
>
> - if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
> + if (!access_ok(uaddr, sizeof(u32)))
> return -EFAULT;
>
> __asm__ __volatile__ ( \
> diff --git a/arch/openrisc/include/asm/uaccess.h b/arch/openrisc/include/asm/uaccess.h
> index bbf5c79cce7a..bc8191a34db7 100644
> --- a/arch/openrisc/include/asm/uaccess.h
> +++ b/arch/openrisc/include/asm/uaccess.h
> @@ -58,7 +58,7 @@
> /* Ensure that addr is below task's addr_limit */
> #define __addr_ok(addr) ((unsigned long) addr < get_fs())
>
> -#define access_ok(type, addr, size) \
> +#define access_ok(addr, size) \
> __range_ok((unsigned long)addr, (unsigned long)size)
>
> /*
> @@ -102,7 +102,7 @@ extern long __put_user_bad(void);
> ({ \
> long __pu_err = -EFAULT; \
> __typeof__(*(ptr)) *__pu_addr = (ptr); \
> - if (access_ok(VERIFY_WRITE, __pu_addr, size)) \
> + if (access_ok(__pu_addr, size)) \
> __put_user_size((x), __pu_addr, (size), __pu_err); \
> __pu_err; \
> })
> @@ -175,7 +175,7 @@ struct __large_struct {
> ({ \
> long __gu_err = -EFAULT, __gu_val = 0; \
> const __typeof__(*(ptr)) * __gu_addr = (ptr); \
> - if (access_ok(VERIFY_READ, __gu_addr, size)) \
> + if (access_ok(__gu_addr, size)) \
> __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \
> (x) = (__force __typeof__(*(ptr)))__gu_val; \
> __gu_err; \
> @@ -254,7 +254,7 @@ extern unsigned long __clear_user(void *addr, unsigned long size);
> static inline __must_check unsigned long
> clear_user(void *addr, unsigned long size)
> {
> - if (likely(access_ok(VERIFY_WRITE, addr, size)))
> + if (likely(access_ok(addr, size)))
> size = __clear_user(addr, size);
> return size;
> }
> diff --git a/arch/openrisc/kernel/signal.c b/arch/openrisc/kernel/signal.c
> index 265f10fb3930..5ac9d3b1d615 100644
> --- a/arch/openrisc/kernel/signal.c
> +++ b/arch/openrisc/kernel/signal.c
> @@ -50,7 +50,7 @@ static int restore_sigcontext(struct pt_regs *regs,
>
> /*
> * Restore the regs from &sc->regs.
> - * (sc is already checked for VERIFY_READ since the sigframe was
> + * (sc is already checked since the sigframe was
> * checked in sys_sigreturn previously)
> */
> err |= __copy_from_user(regs, sc->regs.gpr, 32 * sizeof(unsigned long));
> @@ -83,7 +83,7 @@ asmlinkage long _sys_rt_sigreturn(struct pt_regs *regs)
> if (((long)frame) & 3)
> goto badframe;
>
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
> if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
> goto badframe;
> @@ -161,7 +161,7 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set,
>
> frame = get_sigframe(ksig, regs, sizeof(*frame));
>
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> return -EFAULT;
>
> /* Create siginfo. */
> diff --git a/arch/parisc/include/asm/futex.h b/arch/parisc/include/asm/futex.h
> index cf7ba058f619..d2c3e4106851 100644
> --- a/arch/parisc/include/asm/futex.h
> +++ b/arch/parisc/include/asm/futex.h
> @@ -95,7 +95,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
> if (uaccess_kernel() && !uaddr)
> return -EFAULT;
>
> - if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
> + if (!access_ok(uaddr, sizeof(u32)))
> return -EFAULT;
>
> /* HPPA has no cmpxchg in hardware and therefore the
> diff --git a/arch/parisc/include/asm/uaccess.h b/arch/parisc/include/asm/uaccess.h
> index ea70e36ce6af..30ac2865ea73 100644
> --- a/arch/parisc/include/asm/uaccess.h
> +++ b/arch/parisc/include/asm/uaccess.h
> @@ -27,7 +27,7 @@
> * that put_user is the same as __put_user, etc.
> */
>
> -#define access_ok(type, uaddr, size) \
> +#define access_ok(uaddr, size) \
> ( (uaddr) == (uaddr) )
>
> #define put_user __put_user
> diff --git a/arch/powerpc/include/asm/futex.h b/arch/powerpc/include/asm/futex.h
> index 94542776a62d..88b38b37c21b 100644
> --- a/arch/powerpc/include/asm/futex.h
> +++ b/arch/powerpc/include/asm/futex.h
> @@ -72,7 +72,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
> int ret = 0;
> u32 prev;
>
> - if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
> + if (!access_ok(uaddr, sizeof(u32)))
> return -EFAULT;
>
> __asm__ __volatile__ (
> diff --git a/arch/powerpc/include/asm/uaccess.h b/arch/powerpc/include/asm/uaccess.h
> index ebc0b916dcf9..b31bf45eebd4 100644
> --- a/arch/powerpc/include/asm/uaccess.h
> +++ b/arch/powerpc/include/asm/uaccess.h
> @@ -62,7 +62,7 @@ static inline int __access_ok(unsigned long addr, unsigned long size,
>
> #endif
>
> -#define access_ok(type, addr, size) \
> +#define access_ok(addr, size) \
> (__chk_user_ptr(addr), (void)(type), \
> __access_ok((__force unsigned long)(addr), (size), get_fs()))
>
> @@ -166,7 +166,7 @@ do { \
> long __pu_err = -EFAULT; \
> __typeof__(*(ptr)) __user *__pu_addr = (ptr); \
> might_fault(); \
> - if (access_ok(VERIFY_WRITE, __pu_addr, size)) \
> + if (access_ok(__pu_addr, size)) \
> __put_user_size((x), __pu_addr, (size), __pu_err); \
> __pu_err; \
> })
> @@ -276,7 +276,7 @@ do { \
> __long_type(*(ptr)) __gu_val = 0; \
> __typeof__(*(ptr)) __user *__gu_addr = (ptr); \
> might_fault(); \
> - if (access_ok(VERIFY_READ, __gu_addr, (size))) { \
> + if (access_ok(__gu_addr, (size))) { \
> barrier_nospec(); \
> __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \
> } \
> @@ -374,7 +374,7 @@ extern unsigned long __clear_user(void __user *addr, unsigned long size);
> static inline unsigned long clear_user(void __user *addr, unsigned long size)
> {
> might_fault();
> - if (likely(access_ok(VERIFY_WRITE, addr, size)))
> + if (likely(access_ok(addr, size)))
> return __clear_user(addr, size);
> return size;
> }
> diff --git a/arch/powerpc/kernel/align.c b/arch/powerpc/kernel/align.c
> index 11550a3d1ac2..0d1b6370bae0 100644
> --- a/arch/powerpc/kernel/align.c
> +++ b/arch/powerpc/kernel/align.c
> @@ -131,8 +131,7 @@ static int emulate_spe(struct pt_regs *regs, unsigned int reg,
>
> /* Verify the address of the operand */
> if (unlikely(user_mode(regs) &&
> - !access_ok((flags & ST ? VERIFY_WRITE : VERIFY_READ),
> - addr, nb)))
> + !access_ok(addr, nb)))
> return -EFAULT;
>
> /* userland only */
> diff --git a/arch/powerpc/kernel/rtas_flash.c b/arch/powerpc/kernel/rtas_flash.c
> index 10fabae2574d..8246f437bbc6 100644
> --- a/arch/powerpc/kernel/rtas_flash.c
> +++ b/arch/powerpc/kernel/rtas_flash.c
> @@ -523,7 +523,7 @@ static ssize_t validate_flash_write(struct file *file, const char __user *buf,
> args_buf->status = VALIDATE_INCOMPLETE;
> }
>
> - if (!access_ok(VERIFY_READ, buf, count)) {
> + if (!access_ok(buf, count)) {
> rc = -EFAULT;
> goto done;
> }
> diff --git a/arch/powerpc/kernel/rtasd.c b/arch/powerpc/kernel/rtasd.c
> index 38cadae4ca4f..8a1746d755c9 100644
> --- a/arch/powerpc/kernel/rtasd.c
> +++ b/arch/powerpc/kernel/rtasd.c
> @@ -335,7 +335,7 @@ static ssize_t rtas_log_read(struct file * file, char __user * buf,
>
> count = rtas_error_log_buffer_max;
>
> - if (!access_ok(VERIFY_WRITE, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT;
>
> tmp = kmalloc(count, GFP_KERNEL);
> diff --git a/arch/powerpc/kernel/signal.c b/arch/powerpc/kernel/signal.c
> index b3e8db376ecd..e6c30cee6abf 100644
> --- a/arch/powerpc/kernel/signal.c
> +++ b/arch/powerpc/kernel/signal.c
> @@ -44,7 +44,7 @@ void __user *get_sigframe(struct ksignal *ksig, unsigned long sp,
> newsp = (oldsp - frame_size) & ~0xFUL;
>
> /* Check access */
> - if (!access_ok(VERIFY_WRITE, (void __user *)newsp, oldsp - newsp))
> + if (!access_ok((void __user *)newsp, oldsp - newsp))
> return NULL;
>
> return (void __user *)newsp;
> diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c
> index 2d47cc79e5b3..ede4f04281ae 100644
> --- a/arch/powerpc/kernel/signal_32.c
> +++ b/arch/powerpc/kernel/signal_32.c
> @@ -1017,7 +1017,7 @@ static int do_setcontext(struct ucontext __user *ucp, struct pt_regs *regs, int
> #else
> if (__get_user(mcp, &ucp->uc_regs))
> return -EFAULT;
> - if (!access_ok(VERIFY_READ, mcp, sizeof(*mcp)))
> + if (!access_ok(mcp, sizeof(*mcp)))
> return -EFAULT;
> #endif
> set_current_blocked(&set);
> @@ -1120,7 +1120,7 @@ SYSCALL_DEFINE3(swapcontext, struct ucontext __user *, old_ctx,
> */
> mctx = (struct mcontext __user *)
> ((unsigned long) &old_ctx->uc_mcontext & ~0xfUL);
> - if (!access_ok(VERIFY_WRITE, old_ctx, ctx_size)
> + if (!access_ok(old_ctx, ctx_size)
> || save_user_regs(regs, mctx, NULL, 0, ctx_has_vsx_region)
> || put_sigset_t(&old_ctx->uc_sigmask, &current->blocked)
> || __put_user(to_user_ptr(mctx), &old_ctx->uc_regs))
> @@ -1128,7 +1128,7 @@ SYSCALL_DEFINE3(swapcontext, struct ucontext __user *, old_ctx,
> }
> if (new_ctx == NULL)
> return 0;
> - if (!access_ok(VERIFY_READ, new_ctx, ctx_size) ||
> + if (!access_ok(new_ctx, ctx_size) ||
> fault_in_pages_readable((u8 __user *)new_ctx, ctx_size))
> return -EFAULT;
>
> @@ -1169,7 +1169,7 @@ SYSCALL_DEFINE0(rt_sigreturn)
>
> rt_sf = (struct rt_sigframe __user *)
> (regs->gpr[1] + __SIGNAL_FRAMESIZE + 16);
> - if (!access_ok(VERIFY_READ, rt_sf, sizeof(*rt_sf)))
> + if (!access_ok(rt_sf, sizeof(*rt_sf)))
> goto bad;
>
> #ifdef CONFIG_PPC_TRANSACTIONAL_MEM
> @@ -1315,7 +1315,7 @@ SYSCALL_DEFINE3(debug_setcontext, struct ucontext __user *, ctx,
> current->thread.debug.dbcr0 = new_dbcr0;
> #endif
>
> - if (!access_ok(VERIFY_READ, ctx, sizeof(*ctx)) ||
> + if (!access_ok(ctx, sizeof(*ctx)) ||
> fault_in_pages_readable((u8 __user *)ctx, sizeof(*ctx)))
> return -EFAULT;
>
> @@ -1500,7 +1500,7 @@ SYSCALL_DEFINE0(sigreturn)
> {
> sr = (struct mcontext __user *)from_user_ptr(sigctx.regs);
> addr = sr;
> - if (!access_ok(VERIFY_READ, sr, sizeof(*sr))
> + if (!access_ok(sr, sizeof(*sr))
> || restore_user_regs(regs, sr, 1))
> goto badframe;
> }
> diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c
> index 0935fe6c282a..bd5e6834ca69 100644
> --- a/arch/powerpc/kernel/signal_64.c
> +++ b/arch/powerpc/kernel/signal_64.c
> @@ -383,7 +383,7 @@ static long restore_sigcontext(struct task_struct *tsk, sigset_t *set, int sig,
> err |= __get_user(v_regs, &sc->v_regs);
> if (err)
> return err;
> - if (v_regs && !access_ok(VERIFY_READ, v_regs, 34 * sizeof(vector128)))
> + if (v_regs && !access_ok(v_regs, 34 * sizeof(vector128)))
> return -EFAULT;
> /* Copy 33 vec registers (vr0..31 and vscr) from the stack */
> if (v_regs != NULL && (msr & MSR_VEC) != 0) {
> @@ -502,10 +502,9 @@ static long restore_tm_sigcontexts(struct task_struct *tsk,
> err |= __get_user(tm_v_regs, &tm_sc->v_regs);
> if (err)
> return err;
> - if (v_regs && !access_ok(VERIFY_READ, v_regs, 34 * sizeof(vector128)))
> + if (v_regs && !access_ok(v_regs, 34 * sizeof(vector128)))
> return -EFAULT;
> - if (tm_v_regs && !access_ok(VERIFY_READ,
> - tm_v_regs, 34 * sizeof(vector128)))
> + if (tm_v_regs && !access_ok(tm_v_regs, 34 * sizeof(vector128)))
> return -EFAULT;
> /* Copy 33 vec registers (vr0..31 and vscr) from the stack */
> if (v_regs != NULL && tm_v_regs != NULL && (msr & MSR_VEC) != 0) {
> @@ -671,7 +670,7 @@ SYSCALL_DEFINE3(swapcontext, struct ucontext __user *, old_ctx,
> ctx_has_vsx_region = 1;
>
> if (old_ctx != NULL) {
> - if (!access_ok(VERIFY_WRITE, old_ctx, ctx_size)
> + if (!access_ok(old_ctx, ctx_size)
> || setup_sigcontext(&old_ctx->uc_mcontext, current, 0, NULL, 0,
> ctx_has_vsx_region)
> || __copy_to_user(&old_ctx->uc_sigmask,
> @@ -680,7 +679,7 @@ SYSCALL_DEFINE3(swapcontext, struct ucontext __user *, old_ctx,
> }
> if (new_ctx == NULL)
> return 0;
> - if (!access_ok(VERIFY_READ, new_ctx, ctx_size)
> + if (!access_ok(new_ctx, ctx_size)
> || __get_user(tmp, (u8 __user *) new_ctx)
> || __get_user(tmp, (u8 __user *) new_ctx + ctx_size - 1))
> return -EFAULT;
> @@ -725,7 +724,7 @@ SYSCALL_DEFINE0(rt_sigreturn)
> /* Always make any pending restarted system calls return -EINTR */
> current->restart_block.fn = do_no_restart_syscall;
>
> - if (!access_ok(VERIFY_READ, uc, sizeof(*uc)))
> + if (!access_ok(uc, sizeof(*uc)))
> goto badframe;
>
> if (__copy_from_user(&set, &uc->uc_sigmask, sizeof(set)))
> diff --git a/arch/powerpc/kernel/syscalls.c b/arch/powerpc/kernel/syscalls.c
> index 466216506eb2..e6982ab21816 100644
> --- a/arch/powerpc/kernel/syscalls.c
> +++ b/arch/powerpc/kernel/syscalls.c
> @@ -89,7 +89,7 @@ ppc_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp, s
> if ( (unsigned long)n >= 4096 )
> {
> unsigned long __user *buffer = (unsigned long __user *)n;
> - if (!access_ok(VERIFY_READ, buffer, 5*sizeof(unsigned long))
> + if (!access_ok(buffer, 5*sizeof(unsigned long))
> || __get_user(n, buffer)
> || __get_user(inp, ((fd_set __user * __user *)(buffer+1)))
> || __get_user(outp, ((fd_set __user * __user *)(buffer+2)))
> diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
> index 00af2c4febf4..64936b60d521 100644
> --- a/arch/powerpc/kernel/traps.c
> +++ b/arch/powerpc/kernel/traps.c
> @@ -837,7 +837,7 @@ static void p9_hmi_special_emu(struct pt_regs *regs)
> addr = (__force const void __user *)ea;
>
> /* Check it */
> - if (!access_ok(VERIFY_READ, addr, 16)) {
> + if (!access_ok(addr, 16)) {
> pr_devel("HMI vec emu: bad access %i:%s[%d] nip=%016lx"
> " instr=%08x addr=%016lx\n",
> smp_processor_id(), current->comm, current->pid,
> diff --git a/arch/powerpc/kvm/book3s_64_mmu_hv.c b/arch/powerpc/kvm/book3s_64_mmu_hv.c
> index 6f2d2fb4e098..bd2dcfbf00cd 100644
> --- a/arch/powerpc/kvm/book3s_64_mmu_hv.c
> +++ b/arch/powerpc/kvm/book3s_64_mmu_hv.c
> @@ -1744,7 +1744,7 @@ static ssize_t kvm_htab_read(struct file *file, char __user *buf,
> int first_pass;
> unsigned long hpte[2];
>
> - if (!access_ok(VERIFY_WRITE, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT;
> if (kvm_is_radix(kvm))
> return 0;
> @@ -1844,7 +1844,7 @@ static ssize_t kvm_htab_write(struct file *file, const char __user *buf,
> int mmu_ready;
> int pshift;
>
> - if (!access_ok(VERIFY_READ, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT;
> if (kvm_is_radix(kvm))
> return -EINVAL;
> diff --git a/arch/powerpc/lib/checksum_wrappers.c b/arch/powerpc/lib/checksum_wrappers.c
> index a0cb63fb76a1..890d4ddd91d6 100644
> --- a/arch/powerpc/lib/checksum_wrappers.c
> +++ b/arch/powerpc/lib/checksum_wrappers.c
> @@ -37,7 +37,7 @@ __wsum csum_and_copy_from_user(const void __user *src, void *dst,
> goto out;
> }
>
> - if (unlikely((len < 0) || !access_ok(VERIFY_READ, src, len))) {
> + if (unlikely((len < 0) || !access_ok(src, len))) {
> *err_ptr = -EFAULT;
> csum = (__force unsigned int)sum;
> goto out;
> @@ -78,7 +78,7 @@ __wsum csum_and_copy_to_user(const void *src, void __user *dst, int len,
> goto out;
> }
>
> - if (unlikely((len < 0) || !access_ok(VERIFY_WRITE, dst, len))) {
> + if (unlikely((len < 0) || !access_ok(dst, len))) {
> *err_ptr = -EFAULT;
> csum = -1; /* invalid checksum */
> goto out;
> diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
> index a6dcfda3e11e..887f11bcf330 100644
> --- a/arch/powerpc/mm/fault.c
> +++ b/arch/powerpc/mm/fault.c
> @@ -274,7 +274,7 @@ static bool bad_stack_expansion(struct pt_regs *regs, unsigned long address,
> return false;
>
> if ((flags & FAULT_FLAG_WRITE) && (flags & FAULT_FLAG_USER) &&
> - access_ok(VERIFY_READ, nip, sizeof(*nip))) {
> + access_ok(nip, sizeof(*nip))) {
> unsigned int inst;
> int res;
>
> diff --git a/arch/powerpc/mm/subpage-prot.c b/arch/powerpc/mm/subpage-prot.c
> index 3327551c8b47..5e4178790dee 100644
> --- a/arch/powerpc/mm/subpage-prot.c
> +++ b/arch/powerpc/mm/subpage-prot.c
> @@ -214,7 +214,7 @@ SYSCALL_DEFINE3(subpage_prot, unsigned long, addr,
> return 0;
> }
>
> - if (!access_ok(VERIFY_READ, map, (len >> PAGE_SHIFT) * sizeof(u32)))
> + if (!access_ok(map, (len >> PAGE_SHIFT) * sizeof(u32)))
> return -EFAULT;
>
> down_write(&mm->mmap_sem);
> diff --git a/arch/powerpc/oprofile/backtrace.c b/arch/powerpc/oprofile/backtrace.c
> index 5df6290d1ccc..260c53700978 100644
> --- a/arch/powerpc/oprofile/backtrace.c
> +++ b/arch/powerpc/oprofile/backtrace.c
> @@ -31,7 +31,7 @@ static unsigned int user_getsp32(unsigned int sp, int is_first)
> unsigned int stack_frame[2];
> void __user *p = compat_ptr(sp);
>
> - if (!access_ok(VERIFY_READ, p, sizeof(stack_frame)))
> + if (!access_ok(p, sizeof(stack_frame)))
> return 0;
>
> /*
> @@ -57,7 +57,7 @@ static unsigned long user_getsp64(unsigned long sp, int is_first)
> {
> unsigned long stack_frame[3];
>
> - if (!access_ok(VERIFY_READ, (void __user *)sp, sizeof(stack_frame)))
> + if (!access_ok((void __user *)sp, sizeof(stack_frame)))
> return 0;
>
> if (__copy_from_user_inatomic(stack_frame, (void __user *)sp,
> diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c
> index 43e7b93f27c7..ae8123edddc6 100644
> --- a/arch/powerpc/platforms/cell/spufs/file.c
> +++ b/arch/powerpc/platforms/cell/spufs/file.c
> @@ -609,7 +609,7 @@ static ssize_t spufs_mbox_read(struct file *file, char __user *buf,
> if (len < 4)
> return -EINVAL;
>
> - if (!access_ok(VERIFY_WRITE, buf, len))
> + if (!access_ok(buf, len))
> return -EFAULT;
>
> udata = (void __user *)buf;
> @@ -717,7 +717,7 @@ static ssize_t spufs_ibox_read(struct file *file, char __user *buf,
> if (len < 4)
> return -EINVAL;
>
> - if (!access_ok(VERIFY_WRITE, buf, len))
> + if (!access_ok(buf, len))
> return -EFAULT;
>
> udata = (void __user *)buf;
> @@ -856,7 +856,7 @@ static ssize_t spufs_wbox_write(struct file *file, const char __user *buf,
> return -EINVAL;
>
> udata = (void __user *)buf;
> - if (!access_ok(VERIFY_READ, buf, len))
> + if (!access_ok(buf, len))
> return -EFAULT;
>
> if (__get_user(wbox_data, udata))
> @@ -1994,7 +1994,7 @@ static ssize_t spufs_mbox_info_read(struct file *file, char __user *buf,
> int ret;
> struct spu_context *ctx = file->private_data;
>
> - if (!access_ok(VERIFY_WRITE, buf, len))
> + if (!access_ok(buf, len))
> return -EFAULT;
>
> ret = spu_acquire_saved(ctx);
> @@ -2034,7 +2034,7 @@ static ssize_t spufs_ibox_info_read(struct file *file, char __user *buf,
> struct spu_context *ctx = file->private_data;
> int ret;
>
> - if (!access_ok(VERIFY_WRITE, buf, len))
> + if (!access_ok(buf, len))
> return -EFAULT;
>
> ret = spu_acquire_saved(ctx);
> @@ -2077,7 +2077,7 @@ static ssize_t spufs_wbox_info_read(struct file *file, char __user *buf,
> struct spu_context *ctx = file->private_data;
> int ret;
>
> - if (!access_ok(VERIFY_WRITE, buf, len))
> + if (!access_ok(buf, len))
> return -EFAULT;
>
> ret = spu_acquire_saved(ctx);
> @@ -2129,7 +2129,7 @@ static ssize_t spufs_dma_info_read(struct file *file, char __user *buf,
> struct spu_context *ctx = file->private_data;
> int ret;
>
> - if (!access_ok(VERIFY_WRITE, buf, len))
> + if (!access_ok(buf, len))
> return -EFAULT;
>
> ret = spu_acquire_saved(ctx);
> @@ -2160,7 +2160,7 @@ static ssize_t __spufs_proxydma_info_read(struct spu_context *ctx,
> if (len < ret)
> return -EINVAL;
>
> - if (!access_ok(VERIFY_WRITE, buf, len))
> + if (!access_ok(buf, len))
> return -EFAULT;
>
> info.proxydma_info_type = ctx->csa.prob.dma_querytype_RW;
> diff --git a/arch/powerpc/platforms/powernv/opal-lpc.c b/arch/powerpc/platforms/powernv/opal-lpc.c
> index 6c7ad1d8b32e..2623996a193a 100644
> --- a/arch/powerpc/platforms/powernv/opal-lpc.c
> +++ b/arch/powerpc/platforms/powernv/opal-lpc.c
> @@ -192,7 +192,7 @@ static ssize_t lpc_debug_read(struct file *filp, char __user *ubuf,
> u32 data, pos, len, todo;
> int rc;
>
> - if (!access_ok(VERIFY_WRITE, ubuf, count))
> + if (!access_ok(ubuf, count))
> return -EFAULT;
>
> todo = count;
> @@ -283,7 +283,7 @@ static ssize_t lpc_debug_write(struct file *filp, const char __user *ubuf,
> u32 data, pos, len, todo;
> int rc;
>
> - if (!access_ok(VERIFY_READ, ubuf, count))
> + if (!access_ok(ubuf, count))
> return -EFAULT;
>
> todo = count;
> diff --git a/arch/powerpc/platforms/pseries/scanlog.c b/arch/powerpc/platforms/pseries/scanlog.c
> index 054ce7a16fc3..24b157e1e890 100644
> --- a/arch/powerpc/platforms/pseries/scanlog.c
> +++ b/arch/powerpc/platforms/pseries/scanlog.c
> @@ -63,7 +63,7 @@ static ssize_t scanlog_read(struct file *file, char __user *buf,
> return -EINVAL;
> }
>
> - if (!access_ok(VERIFY_WRITE, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT;
>
> for (;;) {
> diff --git a/arch/riscv/include/asm/futex.h b/arch/riscv/include/asm/futex.h
> index 3b19eba1bc8e..66641624d8a5 100644
> --- a/arch/riscv/include/asm/futex.h
> +++ b/arch/riscv/include/asm/futex.h
> @@ -95,7 +95,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
> u32 val;
> uintptr_t tmp;
>
> - if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
> + if (!access_ok(uaddr, sizeof(u32)))
> return -EFAULT;
>
> __enable_user_access();
> diff --git a/arch/riscv/include/asm/uaccess.h b/arch/riscv/include/asm/uaccess.h
> index 8c3e3e3c8be1..637b896894fc 100644
> --- a/arch/riscv/include/asm/uaccess.h
> +++ b/arch/riscv/include/asm/uaccess.h
> @@ -54,14 +54,8 @@ static inline void set_fs(mm_segment_t fs)
> #define user_addr_max() (get_fs())
>
>
> -#define VERIFY_READ 0
> -#define VERIFY_WRITE 1
> -
> /**
> * access_ok: - Checks if a user space pointer is valid
> - * @type: Type of access: %VERIFY_READ or %VERIFY_WRITE. Note that
> - * %VERIFY_WRITE is a superset of %VERIFY_READ - if it is safe
> - * to write to a block, it is always safe to read from it.
> * @addr: User space pointer to start of block to check
> * @size: Size of block to check
> *
> @@ -76,7 +70,7 @@ static inline void set_fs(mm_segment_t fs)
> * checks that the pointer is in the user space range - after calling
> * this function, memory access functions may still return -EFAULT.
> */
> -#define access_ok(type, addr, size) ({ \
> +#define access_ok(addr, size) ({ \
> __chk_user_ptr(addr); \
> likely(__access_ok((unsigned long __force)(addr), (size))); \
> })
> @@ -258,7 +252,7 @@ do { \
> ({ \
> const __typeof__(*(ptr)) __user *__p = (ptr); \
> might_fault(); \
> - access_ok(VERIFY_READ, __p, sizeof(*__p)) ? \
> + access_ok(__p, sizeof(*__p)) ? \
> __get_user((x), __p) : \
> ((x) = 0, -EFAULT); \
> })
> @@ -386,7 +380,7 @@ do { \
> ({ \
> __typeof__(*(ptr)) __user *__p = (ptr); \
> might_fault(); \
> - access_ok(VERIFY_WRITE, __p, sizeof(*__p)) ? \
> + access_ok(__p, sizeof(*__p)) ? \
> __put_user((x), __p) : \
> -EFAULT; \
> })
> @@ -421,7 +415,7 @@ static inline
> unsigned long __must_check clear_user(void __user *to, unsigned long n)
> {
> might_fault();
> - return access_ok(VERIFY_WRITE, to, n) ?
> + return access_ok(to, n) ?
> __clear_user(to, n) : n;
> }
>
> diff --git a/arch/riscv/kernel/signal.c b/arch/riscv/kernel/signal.c
> index f9b5e7e352ef..837e1646091a 100644
> --- a/arch/riscv/kernel/signal.c
> +++ b/arch/riscv/kernel/signal.c
> @@ -115,7 +115,7 @@ SYSCALL_DEFINE0(rt_sigreturn)
>
> frame = (struct rt_sigframe __user *)regs->sp;
>
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
>
> if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
> @@ -187,7 +187,7 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set,
> long err = 0;
>
> frame = get_sigframe(ksig, regs, sizeof(*frame));
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> return -EFAULT;
>
> err |= copy_siginfo_to_user(&frame->info, &ksig->info);
> diff --git a/arch/s390/include/asm/uaccess.h b/arch/s390/include/asm/uaccess.h
> index ad6b91013a05..bd2545977ad3 100644
> --- a/arch/s390/include/asm/uaccess.h
> +++ b/arch/s390/include/asm/uaccess.h
> @@ -48,7 +48,7 @@ static inline int __range_ok(unsigned long addr, unsigned long size)
> __range_ok((unsigned long)(addr), (size)); \
> })
>
> -#define access_ok(type, addr, size) __access_ok(addr, size)
> +#define access_ok(addr, size) __access_ok(addr, size)
>
> unsigned long __must_check
> raw_copy_from_user(void *to, const void __user *from, unsigned long n);
> diff --git a/arch/sh/include/asm/checksum_32.h b/arch/sh/include/asm/checksum_32.h
> index b58f3d95dc19..36b84cfd3f67 100644
> --- a/arch/sh/include/asm/checksum_32.h
> +++ b/arch/sh/include/asm/checksum_32.h
> @@ -197,7 +197,7 @@ static inline __wsum csum_and_copy_to_user(const void *src,
> int len, __wsum sum,
> int *err_ptr)
> {
> - if (access_ok(VERIFY_WRITE, dst, len))
> + if (access_ok(dst, len))
> return csum_partial_copy_generic((__force const void *)src,
> dst, len, sum, NULL, err_ptr);
>
> diff --git a/arch/sh/include/asm/futex.h b/arch/sh/include/asm/futex.h
> index 6d192f4908a7..3190ec89df81 100644
> --- a/arch/sh/include/asm/futex.h
> +++ b/arch/sh/include/asm/futex.h
> @@ -22,7 +22,7 @@ static inline int
> futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
> u32 oldval, u32 newval)
> {
> - if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
> + if (!access_ok(uaddr, sizeof(u32)))
> return -EFAULT;
>
> return atomic_futex_op_cmpxchg_inatomic(uval, uaddr, oldval, newval);
> diff --git a/arch/sh/include/asm/uaccess.h b/arch/sh/include/asm/uaccess.h
> index 32eb56e00c11..deebbfab5342 100644
> --- a/arch/sh/include/asm/uaccess.h
> +++ b/arch/sh/include/asm/uaccess.h
> @@ -18,7 +18,7 @@
> */
> #define __access_ok(addr, size) \
> (__addr_ok((addr) + (size)))
> -#define access_ok(type, addr, size) \
> +#define access_ok(addr, size) \
> (__chk_user_ptr(addr), \
> __access_ok((unsigned long __force)(addr), (size)))
>
> @@ -66,7 +66,7 @@ struct __large_struct { unsigned long buf[100]; };
> long __gu_err = -EFAULT; \
> unsigned long __gu_val = 0; \
> const __typeof__(*(ptr)) *__gu_addr = (ptr); \
> - if (likely(access_ok(VERIFY_READ, __gu_addr, (size)))) \
> + if (likely(access_ok(__gu_addr, (size)))) \
> __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \
> (x) = (__force __typeof__(*(ptr)))__gu_val; \
> __gu_err; \
> @@ -87,7 +87,7 @@ struct __large_struct { unsigned long buf[100]; };
> long __pu_err = -EFAULT; \
> __typeof__(*(ptr)) __user *__pu_addr = (ptr); \
> __typeof__(*(ptr)) __pu_val = x; \
> - if (likely(access_ok(VERIFY_WRITE, __pu_addr, size))) \
> + if (likely(access_ok(__pu_addr, size))) \
> __put_user_size(__pu_val, __pu_addr, (size), \
> __pu_err); \
> __pu_err; \
> @@ -132,8 +132,7 @@ __kernel_size_t __clear_user(void *addr, __kernel_size_t size);
> void __user * __cl_addr = (addr); \
> unsigned long __cl_size = (n); \
> \
> - if (__cl_size && access_ok(VERIFY_WRITE, \
> - ((unsigned long)(__cl_addr)), __cl_size)) \
> + if (__cl_size && access_ok(__cl_addr, __cl_size)) \
> __cl_size = __clear_user(__cl_addr, __cl_size); \
> \
> __cl_size; \
> diff --git a/arch/sh/kernel/signal_32.c b/arch/sh/kernel/signal_32.c
> index c46c0020ff55..2a2121ba8ebe 100644
> --- a/arch/sh/kernel/signal_32.c
> +++ b/arch/sh/kernel/signal_32.c
> @@ -160,7 +160,7 @@ asmlinkage int sys_sigreturn(void)
> /* Always make any pending restarted system calls return -EINTR */
> current->restart_block.fn = do_no_restart_syscall;
>
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
>
> if (__get_user(set.sig[0], &frame->sc.oldmask)
> @@ -190,7 +190,7 @@ asmlinkage int sys_rt_sigreturn(void)
> /* Always make any pending restarted system calls return -EINTR */
> current->restart_block.fn = do_no_restart_syscall;
>
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
>
> if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
> @@ -272,7 +272,7 @@ static int setup_frame(struct ksignal *ksig, sigset_t *set,
>
> frame = get_sigframe(&ksig->ka, regs->regs[15], sizeof(*frame));
>
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> return -EFAULT;
>
> err |= setup_sigcontext(&frame->sc, regs, set->sig[0]);
> @@ -338,7 +338,7 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set,
>
> frame = get_sigframe(&ksig->ka, regs->regs[15], sizeof(*frame));
>
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> return -EFAULT;
>
> err |= copy_siginfo_to_user(&frame->info, &ksig->info);
> diff --git a/arch/sh/kernel/signal_64.c b/arch/sh/kernel/signal_64.c
> index 76661dee3c65..f1f1598879c2 100644
> --- a/arch/sh/kernel/signal_64.c
> +++ b/arch/sh/kernel/signal_64.c
> @@ -259,7 +259,7 @@ asmlinkage int sys_sigreturn(unsigned long r2, unsigned long r3,
> /* Always make any pending restarted system calls return -EINTR */
> current->restart_block.fn = do_no_restart_syscall;
>
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
>
> if (__get_user(set.sig[0], &frame->sc.oldmask)
> @@ -293,7 +293,7 @@ asmlinkage int sys_rt_sigreturn(unsigned long r2, unsigned long r3,
> /* Always make any pending restarted system calls return -EINTR */
> current->restart_block.fn = do_no_restart_syscall;
>
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
>
> if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
> @@ -379,7 +379,7 @@ static int setup_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs
>
> frame = get_sigframe(&ksig->ka, regs->regs[REG_SP], sizeof(*frame));
>
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> return -EFAULT;
>
> err |= setup_sigcontext(&frame->sc, regs, set->sig[0]);
> @@ -465,7 +465,7 @@ static int setup_rt_frame(struct ksignal *kig, sigset_t *set,
>
> frame = get_sigframe(&ksig->ka, regs->regs[REG_SP], sizeof(*frame));
>
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> return -EFAULT;
>
> err |= __put_user(&frame->info, &frame->pinfo);
> diff --git a/arch/sh/kernel/traps_64.c b/arch/sh/kernel/traps_64.c
> index c52bda4d2574..8ce90a7da67d 100644
> --- a/arch/sh/kernel/traps_64.c
> +++ b/arch/sh/kernel/traps_64.c
> @@ -40,7 +40,7 @@ static int read_opcode(reg_size_t pc, insn_size_t *result_opcode, int from_user_
> /* SHmedia */
> aligned_pc = pc & ~3;
> if (from_user_mode) {
> - if (!access_ok(VERIFY_READ, aligned_pc, sizeof(insn_size_t))) {
> + if (!access_ok(aligned_pc, sizeof(insn_size_t))) {
> get_user_error = -EFAULT;
> } else {
> get_user_error = __get_user(opcode, (insn_size_t *)aligned_pc);
> @@ -180,7 +180,7 @@ static int misaligned_load(struct pt_regs *regs,
> if (user_mode(regs)) {
> __u64 buffer;
>
> - if (!access_ok(VERIFY_READ, (unsigned long) address, 1UL<<width_shift)) {
> + if (!access_ok((unsigned long) address, 1UL<<width_shift)) {
> return -1;
> }
>
> @@ -254,7 +254,7 @@ static int misaligned_store(struct pt_regs *regs,
> if (user_mode(regs)) {
> __u64 buffer;
>
> - if (!access_ok(VERIFY_WRITE, (unsigned long) address, 1UL<<width_shift)) {
> + if (!access_ok((unsigned long) address, 1UL<<width_shift)) {
> return -1;
> }
>
> @@ -327,7 +327,7 @@ static int misaligned_fpu_load(struct pt_regs *regs,
> __u64 buffer;
> __u32 buflo, bufhi;
>
> - if (!access_ok(VERIFY_READ, (unsigned long) address, 1UL<<width_shift)) {
> + if (!access_ok((unsigned long) address, 1UL<<width_shift)) {
> return -1;
> }
>
> @@ -400,7 +400,7 @@ static int misaligned_fpu_store(struct pt_regs *regs,
> /* Initialise these to NaNs. */
> __u32 buflo=0xffffffffUL, bufhi=0xffffffffUL;
>
> - if (!access_ok(VERIFY_WRITE, (unsigned long) address, 1UL<<width_shift)) {
> + if (!access_ok((unsigned long) address, 1UL<<width_shift)) {
> return -1;
> }
>
> @@ -663,7 +663,7 @@ void do_reserved_inst(unsigned long error_code, struct pt_regs *regs)
> /* SHmedia : check for defect. This requires executable vmas
> to be readable too. */
> aligned_pc = pc & ~3;
> - if (!access_ok(VERIFY_READ, aligned_pc, sizeof(insn_size_t)))
> + if (!access_ok(aligned_pc, sizeof(insn_size_t)))
> get_user_error = -EFAULT;
> else
> get_user_error = __get_user(opcode, (insn_size_t *)aligned_pc);
> diff --git a/arch/sh/mm/gup.c b/arch/sh/mm/gup.c
> index 56c86ca98ecf..3e27f6d1f1ec 100644
> --- a/arch/sh/mm/gup.c
> +++ b/arch/sh/mm/gup.c
> @@ -177,8 +177,7 @@ int __get_user_pages_fast(unsigned long start, int nr_pages, int write,
> addr = start;
> len = (unsigned long) nr_pages << PAGE_SHIFT;
> end = start + len;
> - if (unlikely(!access_ok(write ? VERIFY_WRITE : VERIFY_READ,
> - (void __user *)start, len)))
> + if (unlikely(!access_ok((void __user *)start, len)))
> return 0;
>
> /*
> diff --git a/arch/sh/oprofile/backtrace.c b/arch/sh/oprofile/backtrace.c
> index c7695f99c8c3..8279a7e91043 100644
> --- a/arch/sh/oprofile/backtrace.c
> +++ b/arch/sh/oprofile/backtrace.c
> @@ -51,7 +51,7 @@ user_backtrace(unsigned long *stackaddr, struct pt_regs *regs)
> unsigned long buf_stack;
>
> /* Also check accessibility of address */
> - if (!access_ok(VERIFY_READ, stackaddr, sizeof(unsigned long)))
> + if (!access_ok(stackaddr, sizeof(unsigned long)))
> return NULL;
>
> if (__copy_from_user_inatomic(&buf_stack, stackaddr, sizeof(unsigned long)))
> diff --git a/arch/sparc/include/asm/checksum_32.h b/arch/sparc/include/asm/checksum_32.h
> index d1e53d7aed39..5fc98d80b03b 100644
> --- a/arch/sparc/include/asm/checksum_32.h
> +++ b/arch/sparc/include/asm/checksum_32.h
> @@ -87,7 +87,7 @@ static inline __wsum
> csum_partial_copy_to_user(const void *src, void __user *dst, int len,
> __wsum sum, int *err)
> {
> - if (!access_ok (VERIFY_WRITE, dst, len)) {
> + if (!access_ok(dst, len)) {
> *err = -EFAULT;
> return sum;
> } else {
> diff --git a/arch/sparc/include/asm/uaccess_32.h b/arch/sparc/include/asm/uaccess_32.h
> index de71c65b99f0..69afb856e181 100644
> --- a/arch/sparc/include/asm/uaccess_32.h
> +++ b/arch/sparc/include/asm/uaccess_32.h
> @@ -39,7 +39,7 @@
> #define __user_ok(addr, size) ({ (void)(size); (addr) < STACK_TOP; })
> #define __kernel_ok (uaccess_kernel())
> #define __access_ok(addr, size) (__user_ok((addr) & get_fs().seg, (size)))
> -#define access_ok(type, addr, size) \
> +#define access_ok(addr, size) \
> ({ (void)(type); __access_ok((unsigned long)(addr), size); })
>
> /*
> diff --git a/arch/sparc/include/asm/uaccess_64.h b/arch/sparc/include/asm/uaccess_64.h
> index cbb308cee394..87ae9ffb1521 100644
> --- a/arch/sparc/include/asm/uaccess_64.h
> +++ b/arch/sparc/include/asm/uaccess_64.h
> @@ -68,7 +68,7 @@ static inline int __access_ok(const void __user * addr, unsigned long size)
> return 1;
> }
>
> -static inline int access_ok(int type, const void __user * addr, unsigned long size)
> +static inline int access_ok(const void __user * addr, unsigned long size)
> {
> return 1;
> }
> diff --git a/arch/sparc/kernel/sigutil_32.c b/arch/sparc/kernel/sigutil_32.c
> index 1e9fae56a853..f25c6daa9f52 100644
> --- a/arch/sparc/kernel/sigutil_32.c
> +++ b/arch/sparc/kernel/sigutil_32.c
> @@ -65,7 +65,7 @@ int restore_fpu_state(struct pt_regs *regs, __siginfo_fpu_t __user *fpu)
> set_used_math();
> clear_tsk_thread_flag(current, TIF_USEDFPU);
>
> - if (!access_ok(VERIFY_READ, fpu, sizeof(*fpu)))
> + if (!access_ok(fpu, sizeof(*fpu)))
> return -EFAULT;
>
> err = __copy_from_user(&current->thread.float_regs[0], &fpu->si_float_regs[0],
> diff --git a/arch/sparc/kernel/unaligned_32.c b/arch/sparc/kernel/unaligned_32.c
> index 64ac8c0c1429..83db94c0b431 100644
> --- a/arch/sparc/kernel/unaligned_32.c
> +++ b/arch/sparc/kernel/unaligned_32.c
> @@ -278,7 +278,6 @@ static inline int ok_for_user(struct pt_regs *regs, unsigned int insn,
> enum direction dir)
> {
> unsigned int reg;
> - int check = (dir == load) ? VERIFY_READ : VERIFY_WRITE;
> int size = ((insn >> 19) & 3) == 3 ? 8 : 4;
>
> if ((regs->pc | regs->npc) & 3)
> @@ -290,18 +289,18 @@ static inline int ok_for_user(struct pt_regs *regs, unsigned int insn,
>
> reg = (insn >> 25) & 0x1f;
> if (reg >= 16) {
> - if (!access_ok(check, WINREG_ADDR(reg - 16), size))
> + if (!access_ok(WINREG_ADDR(reg - 16), size))
> return -EFAULT;
> }
> reg = (insn >> 14) & 0x1f;
> if (reg >= 16) {
> - if (!access_ok(check, WINREG_ADDR(reg - 16), size))
> + if (!access_ok(WINREG_ADDR(reg - 16), size))
> return -EFAULT;
> }
> if (!(insn & 0x2000)) {
> reg = (insn & 0x1f);
> if (reg >= 16) {
> - if (!access_ok(check, WINREG_ADDR(reg - 16), size))
> + if (!access_ok(WINREG_ADDR(reg - 16), size))
> return -EFAULT;
> }
> }
> diff --git a/arch/um/kernel/ptrace.c b/arch/um/kernel/ptrace.c
> index 1a1d88a4d940..5f47422401e1 100644
> --- a/arch/um/kernel/ptrace.c
> +++ b/arch/um/kernel/ptrace.c
> @@ -66,7 +66,7 @@ long arch_ptrace(struct task_struct *child, long request,
>
> #ifdef PTRACE_GETREGS
> case PTRACE_GETREGS: { /* Get all gp regs from the child. */
> - if (!access_ok(VERIFY_WRITE, p, MAX_REG_OFFSET)) {
> + if (!access_ok(p, MAX_REG_OFFSET)) {
> ret = -EIO;
> break;
> }
> @@ -81,7 +81,7 @@ long arch_ptrace(struct task_struct *child, long request,
> #ifdef PTRACE_SETREGS
> case PTRACE_SETREGS: { /* Set all gp regs in the child. */
> unsigned long tmp = 0;
> - if (!access_ok(VERIFY_READ, p, MAX_REG_OFFSET)) {
> + if (!access_ok(p, MAX_REG_OFFSET)) {
> ret = -EIO;
> break;
> }
> diff --git a/arch/unicore32/kernel/signal.c b/arch/unicore32/kernel/signal.c
> index 4ae51cf15ade..63be04809d40 100644
> --- a/arch/unicore32/kernel/signal.c
> +++ b/arch/unicore32/kernel/signal.c
> @@ -117,7 +117,7 @@ asmlinkage int __sys_rt_sigreturn(struct pt_regs *regs)
>
> frame = (struct rt_sigframe __user *)regs->UCreg_sp;
>
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
>
> if (restore_sigframe(regs, &frame->sig))
> @@ -205,7 +205,7 @@ static inline void __user *get_sigframe(struct k_sigaction *ka,
> /*
> * Check that we can actually write to the signal frame.
> */
> - if (!access_ok(VERIFY_WRITE, frame, framesize))
> + if (!access_ok(frame, framesize))
> frame = NULL;
>
> return frame;
> diff --git a/arch/x86/entry/vsyscall/vsyscall_64.c b/arch/x86/entry/vsyscall/vsyscall_64.c
> index d78bcc03e60e..d9d81ad7a400 100644
> --- a/arch/x86/entry/vsyscall/vsyscall_64.c
> +++ b/arch/x86/entry/vsyscall/vsyscall_64.c
> @@ -99,7 +99,7 @@ static bool write_ok_or_segv(unsigned long ptr, size_t size)
> * sig_on_uaccess_err, this could go away.
> */
>
> - if (!access_ok(VERIFY_WRITE, (void __user *)ptr, size)) {
> + if (!access_ok((void __user *)ptr, size)) {
> struct thread_struct *thread = &current->thread;
>
> thread->error_code = X86_PF_USER | X86_PF_WRITE;
> diff --git a/arch/x86/ia32/ia32_aout.c b/arch/x86/ia32/ia32_aout.c
> index 8e02b30cf08e..f65b78d32f5e 100644
> --- a/arch/x86/ia32/ia32_aout.c
> +++ b/arch/x86/ia32/ia32_aout.c
> @@ -176,10 +176,10 @@ static int aout_core_dump(struct coredump_params *cprm)
>
> /* make sure we actually have a data and stack area to dump */
> set_fs(USER_DS);
> - if (!access_ok(VERIFY_READ, (void *) (unsigned long)START_DATA(dump),
> + if (!access_ok((void *) (unsigned long)START_DATA(dump),
> dump.u_dsize << PAGE_SHIFT))
> dump.u_dsize = 0;
> - if (!access_ok(VERIFY_READ, (void *) (unsigned long)START_STACK(dump),
> + if (!access_ok((void *) (unsigned long)START_STACK(dump),
> dump.u_ssize << PAGE_SHIFT))
> dump.u_ssize = 0;
>
> diff --git a/arch/x86/ia32/ia32_signal.c b/arch/x86/ia32/ia32_signal.c
> index 86b1341cba9a..321fe5f5d0e9 100644
> --- a/arch/x86/ia32/ia32_signal.c
> +++ b/arch/x86/ia32/ia32_signal.c
> @@ -119,7 +119,7 @@ asmlinkage long sys32_sigreturn(void)
> struct sigframe_ia32 __user *frame = (struct sigframe_ia32 __user *)(regs->sp-8);
> sigset_t set;
>
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
> if (__get_user(set.sig[0], &frame->sc.oldmask)
> || (_COMPAT_NSIG_WORDS > 1
> @@ -147,7 +147,7 @@ asmlinkage long sys32_rt_sigreturn(void)
>
> frame = (struct rt_sigframe_ia32 __user *)(regs->sp - 4);
>
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
> if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
> goto badframe;
> @@ -269,7 +269,7 @@ int ia32_setup_frame(int sig, struct ksignal *ksig,
>
> frame = get_sigframe(ksig, regs, sizeof(*frame), &fpstate);
>
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> return -EFAULT;
>
> if (__put_user(sig, &frame->sig))
> @@ -349,7 +349,7 @@ int ia32_setup_rt_frame(int sig, struct ksignal *ksig,
>
> frame = get_sigframe(ksig, regs, sizeof(*frame), &fpstate);
>
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> return -EFAULT;
>
> put_user_try {
> diff --git a/arch/x86/ia32/sys_ia32.c b/arch/x86/ia32/sys_ia32.c
> index 11ef7b7c9cc8..a43212036257 100644
> --- a/arch/x86/ia32/sys_ia32.c
> +++ b/arch/x86/ia32/sys_ia32.c
> @@ -75,7 +75,7 @@ static int cp_stat64(struct stat64 __user *ubuf, struct kstat *stat)
> typeof(ubuf->st_gid) gid = 0;
> SET_UID(uid, from_kuid_munged(current_user_ns(), stat->uid));
> SET_GID(gid, from_kgid_munged(current_user_ns(), stat->gid));
> - if (!access_ok(VERIFY_WRITE, ubuf, sizeof(struct stat64)) ||
> + if (!access_ok(ubuf, sizeof(struct stat64)) ||
> __put_user(huge_encode_dev(stat->dev), &ubuf->st_dev) ||
> __put_user(stat->ino, &ubuf->__st_ino) ||
> __put_user(stat->ino, &ubuf->st_ino) ||
> diff --git a/arch/x86/include/asm/checksum_32.h b/arch/x86/include/asm/checksum_32.h
> index 7a659c74cd03..f57b94e02c57 100644
> --- a/arch/x86/include/asm/checksum_32.h
> +++ b/arch/x86/include/asm/checksum_32.h
> @@ -182,7 +182,7 @@ static inline __wsum csum_and_copy_to_user(const void *src,
> __wsum ret;
>
> might_sleep();
> - if (access_ok(VERIFY_WRITE, dst, len)) {
> + if (access_ok(dst, len)) {
> stac();
> ret = csum_partial_copy_generic(src, (__force void *)dst,
> len, sum, NULL, err_ptr);
> diff --git a/arch/x86/include/asm/pgtable_32.h b/arch/x86/include/asm/pgtable_32.h
> index b3ec519e3982..4fe9e7fc74d3 100644
> --- a/arch/x86/include/asm/pgtable_32.h
> +++ b/arch/x86/include/asm/pgtable_32.h
> @@ -37,7 +37,7 @@ void sync_initial_page_table(void);
> /*
> * Define this if things work differently on an i386 and an i486:
> * it will (on an i486) warn about kernel memory accesses that are
> - * done without a 'access_ok(VERIFY_WRITE,..)'
> + * done without a 'access_ok( ..)'
> */
> #undef TEST_ACCESS_OK
>
> diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
> index b5e58cc0c5e7..3920f456db79 100644
> --- a/arch/x86/include/asm/uaccess.h
> +++ b/arch/x86/include/asm/uaccess.h
> @@ -77,9 +77,6 @@ static inline bool __chk_range_not_ok(unsigned long addr, unsigned long size, un
>
> /**
> * access_ok: - Checks if a user space pointer is valid
> - * @type: Type of access: %VERIFY_READ or %VERIFY_WRITE. Note that
> - * %VERIFY_WRITE is a superset of %VERIFY_READ - if it is safe
> - * to write to a block, it is always safe to read from it.
> * @addr: User space pointer to start of block to check
> * @size: Size of block to check
> *
> @@ -95,7 +92,7 @@ static inline bool __chk_range_not_ok(unsigned long addr, unsigned long size, un
> * checks that the pointer is in the user space range - after calling
> * this function, memory access functions may still return -EFAULT.
> */
> -#define access_ok(type, addr, size) \
> +#define access_ok(addr, size) \
> ({ \
> WARN_ON_IN_IRQ(); \
> likely(!__range_not_ok(addr, size, user_addr_max())); \
> @@ -670,7 +667,7 @@ extern void __cmpxchg_wrong_size(void)
>
> #define user_atomic_cmpxchg_inatomic(uval, ptr, old, new) \
> ({ \
> - access_ok(VERIFY_WRITE, (ptr), sizeof(*(ptr))) ? \
> + access_ok((ptr), sizeof(*(ptr))) ? \
> __user_atomic_cmpxchg_inatomic((uval), (ptr), \
> (old), (new), sizeof(*(ptr))) : \
> -EFAULT; \
> diff --git a/arch/x86/kernel/fpu/signal.c b/arch/x86/kernel/fpu/signal.c
> index d99a8ee9e185..f6a1d299627c 100644
> --- a/arch/x86/kernel/fpu/signal.c
> +++ b/arch/x86/kernel/fpu/signal.c
> @@ -164,7 +164,7 @@ int copy_fpstate_to_sigframe(void __user *buf, void __user *buf_fx, int size)
> ia32_fxstate &= (IS_ENABLED(CONFIG_X86_32) ||
> IS_ENABLED(CONFIG_IA32_EMULATION));
>
> - if (!access_ok(VERIFY_WRITE, buf, size))
> + if (!access_ok(buf, size))
> return -EACCES;
>
> if (!static_cpu_has(X86_FEATURE_FPU))
> @@ -281,7 +281,7 @@ static int __fpu__restore_sig(void __user *buf, void __user *buf_fx, int size)
> return 0;
> }
>
> - if (!access_ok(VERIFY_READ, buf, size))
> + if (!access_ok(buf, size))
> return -EACCES;
>
> fpu__initialize(fpu);
> diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c
> index 92a3b312a53c..08dfd4c1a4f9 100644
> --- a/arch/x86/kernel/signal.c
> +++ b/arch/x86/kernel/signal.c
> @@ -322,7 +322,7 @@ __setup_frame(int sig, struct ksignal *ksig, sigset_t *set,
>
> frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fpstate);
>
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> return -EFAULT;
>
> if (__put_user(sig, &frame->sig))
> @@ -385,7 +385,7 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig,
>
> frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fpstate);
>
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> return -EFAULT;
>
> put_user_try {
> @@ -465,7 +465,7 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig,
>
> frame = get_sigframe(&ksig->ka, regs, sizeof(struct rt_sigframe), &fp);
>
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> return -EFAULT;
>
> if (ksig->ka.sa.sa_flags & SA_SIGINFO) {
> @@ -547,7 +547,7 @@ static int x32_setup_rt_frame(struct ksignal *ksig,
>
> frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fpstate);
>
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> return -EFAULT;
>
> if (ksig->ka.sa.sa_flags & SA_SIGINFO) {
> @@ -610,7 +610,7 @@ SYSCALL_DEFINE0(sigreturn)
>
> frame = (struct sigframe __user *)(regs->sp - 8);
>
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
> if (__get_user(set.sig[0], &frame->sc.oldmask) || (_NSIG_WORDS > 1
> && __copy_from_user(&set.sig[1], &frame->extramask,
> @@ -642,7 +642,7 @@ SYSCALL_DEFINE0(rt_sigreturn)
> unsigned long uc_flags;
>
> frame = (struct rt_sigframe __user *)(regs->sp - sizeof(long));
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
> if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
> goto badframe;
> @@ -871,7 +871,7 @@ asmlinkage long sys32_x32_rt_sigreturn(void)
>
> frame = (struct rt_sigframe_x32 __user *)(regs->sp - 8);
>
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
> if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
> goto badframe;
> diff --git a/arch/x86/kernel/stacktrace.c b/arch/x86/kernel/stacktrace.c
> index 7627455047c2..5c2d71a1dc06 100644
> --- a/arch/x86/kernel/stacktrace.c
> +++ b/arch/x86/kernel/stacktrace.c
> @@ -177,7 +177,7 @@ copy_stack_frame(const void __user *fp, struct stack_frame_user *frame)
> {
> int ret;
>
> - if (!access_ok(VERIFY_READ, fp, sizeof(*frame)))
> + if (!access_ok(fp, sizeof(*frame)))
> return 0;
>
> ret = 1;
> diff --git a/arch/x86/kernel/vm86_32.c b/arch/x86/kernel/vm86_32.c
> index c2fd39752da8..a092b6b40c6b 100644
> --- a/arch/x86/kernel/vm86_32.c
> +++ b/arch/x86/kernel/vm86_32.c
> @@ -114,7 +114,7 @@ void save_v86_state(struct kernel_vm86_regs *regs, int retval)
> set_flags(regs->pt.flags, VEFLAGS, X86_EFLAGS_VIF | vm86->veflags_mask);
> user = vm86->user_vm86;
>
> - if (!access_ok(VERIFY_WRITE, user, vm86->vm86plus.is_vm86pus ?
> + if (!access_ok(user, vm86->vm86plus.is_vm86pus ?
> sizeof(struct vm86plus_struct) :
> sizeof(struct vm86_struct))) {
> pr_alert("could not access userspace vm86 info\n");
> @@ -278,7 +278,7 @@ static long do_sys_vm86(struct vm86plus_struct __user *user_vm86, bool plus)
> if (vm86->saved_sp0)
> return -EPERM;
>
> - if (!access_ok(VERIFY_READ, user_vm86, plus ?
> + if (!access_ok(user_vm86, plus ?
> sizeof(struct vm86_struct) :
> sizeof(struct vm86plus_struct)))
> return -EFAULT;
> diff --git a/arch/x86/lib/csum-wrappers_64.c b/arch/x86/lib/csum-wrappers_64.c
> index 8bd53589ecfb..a6a2b7dccbff 100644
> --- a/arch/x86/lib/csum-wrappers_64.c
> +++ b/arch/x86/lib/csum-wrappers_64.c
> @@ -27,7 +27,7 @@ csum_partial_copy_from_user(const void __user *src, void *dst,
> might_sleep();
> *errp = 0;
>
> - if (!likely(access_ok(VERIFY_READ, src, len)))
> + if (!likely(access_ok(src, len)))
> goto out_err;
>
> /*
> @@ -89,7 +89,7 @@ csum_partial_copy_to_user(const void *src, void __user *dst,
>
> might_sleep();
>
> - if (unlikely(!access_ok(VERIFY_WRITE, dst, len))) {
> + if (unlikely(!access_ok(dst, len))) {
> *errp = -EFAULT;
> return 0;
> }
> diff --git a/arch/x86/lib/usercopy_32.c b/arch/x86/lib/usercopy_32.c
> index 71fb58d44d58..bfd94e7812fc 100644
> --- a/arch/x86/lib/usercopy_32.c
> +++ b/arch/x86/lib/usercopy_32.c
> @@ -67,7 +67,7 @@ unsigned long
> clear_user(void __user *to, unsigned long n)
> {
> might_fault();
> - if (access_ok(VERIFY_WRITE, to, n))
> + if (access_ok(to, n))
> __do_clear_user(to, n);
> return n;
> }
> diff --git a/arch/x86/lib/usercopy_64.c b/arch/x86/lib/usercopy_64.c
> index 1bd837cdc4b1..ee42bb0cbeb3 100644
> --- a/arch/x86/lib/usercopy_64.c
> +++ b/arch/x86/lib/usercopy_64.c
> @@ -48,7 +48,7 @@ EXPORT_SYMBOL(__clear_user);
>
> unsigned long clear_user(void __user *to, unsigned long n)
> {
> - if (access_ok(VERIFY_WRITE, to, n))
> + if (access_ok(to, n))
> return __clear_user(to, n);
> return n;
> }
> diff --git a/arch/x86/math-emu/fpu_system.h b/arch/x86/math-emu/fpu_system.h
> index c8b1b31ed7c4..f98a0c956764 100644
> --- a/arch/x86/math-emu/fpu_system.h
> +++ b/arch/x86/math-emu/fpu_system.h
> @@ -104,7 +104,7 @@ static inline bool seg_writable(struct desc_struct *d)
> #define instruction_address (*(struct address *)&I387->soft.fip)
> #define operand_address (*(struct address *)&I387->soft.foo)
>
> -#define FPU_access_ok(x,y,z) if ( !access_ok(x,y,z) ) \
> +#define FPU_access_ok(y,z) if ( !access_ok(y,z) ) \
> math_abort(FPU_info,SIGSEGV)
> #define FPU_abort math_abort(FPU_info, SIGSEGV)
>
> @@ -119,7 +119,7 @@ static inline bool seg_writable(struct desc_struct *d)
> /* A simpler test than access_ok() can probably be done for
> FPU_code_access_ok() because the only possible error is to step
> past the upper boundary of a legal code area. */
> -#define FPU_code_access_ok(z) FPU_access_ok(VERIFY_READ,(void __user *)FPU_EIP,z)
> +#define FPU_code_access_ok(z) FPU_access_ok((void __user *)FPU_EIP,z)
> #endif
>
> #define FPU_get_user(x,y) get_user((x),(y))
> diff --git a/arch/x86/math-emu/load_store.c b/arch/x86/math-emu/load_store.c
> index f821a9cd7753..f15263e158e8 100644
> --- a/arch/x86/math-emu/load_store.c
> +++ b/arch/x86/math-emu/load_store.c
> @@ -251,7 +251,7 @@ int FPU_load_store(u_char type, fpu_addr_modes addr_modes,
> break;
> case 024: /* fldcw */
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_READ, data_address, 2);
> + FPU_access_ok(data_address, 2);
> FPU_get_user(control_word,
> (unsigned short __user *)data_address);
> RE_ENTRANT_CHECK_ON;
> @@ -291,7 +291,7 @@ int FPU_load_store(u_char type, fpu_addr_modes addr_modes,
> break;
> case 034: /* fstcw m16int */
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_WRITE, data_address, 2);
> + FPU_access_ok(data_address, 2);
> FPU_put_user(control_word,
> (unsigned short __user *)data_address);
> RE_ENTRANT_CHECK_ON;
> @@ -305,7 +305,7 @@ int FPU_load_store(u_char type, fpu_addr_modes addr_modes,
> break;
> case 036: /* fstsw m2byte */
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_WRITE, data_address, 2);
> + FPU_access_ok(data_address, 2);
> FPU_put_user(status_word(),
> (unsigned short __user *)data_address);
> RE_ENTRANT_CHECK_ON;
> diff --git a/arch/x86/math-emu/reg_ld_str.c b/arch/x86/math-emu/reg_ld_str.c
> index d40ff45497b9..f3779743d15e 100644
> --- a/arch/x86/math-emu/reg_ld_str.c
> +++ b/arch/x86/math-emu/reg_ld_str.c
> @@ -84,7 +84,7 @@ int FPU_load_extended(long double __user *s, int stnr)
> FPU_REG *sti_ptr = &st(stnr);
>
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_READ, s, 10);
> + FPU_access_ok(s, 10);
> __copy_from_user(sti_ptr, s, 10);
> RE_ENTRANT_CHECK_ON;
>
> @@ -98,7 +98,7 @@ int FPU_load_double(double __user *dfloat, FPU_REG *loaded_data)
> unsigned m64, l64;
>
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_READ, dfloat, 8);
> + FPU_access_ok(dfloat, 8);
> FPU_get_user(m64, 1 + (unsigned long __user *)dfloat);
> FPU_get_user(l64, (unsigned long __user *)dfloat);
> RE_ENTRANT_CHECK_ON;
> @@ -159,7 +159,7 @@ int FPU_load_single(float __user *single, FPU_REG *loaded_data)
> int exp, tag, negative;
>
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_READ, single, 4);
> + FPU_access_ok(single, 4);
> FPU_get_user(m32, (unsigned long __user *)single);
> RE_ENTRANT_CHECK_ON;
>
> @@ -214,7 +214,7 @@ int FPU_load_int64(long long __user *_s)
> FPU_REG *st0_ptr = &st(0);
>
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_READ, _s, 8);
> + FPU_access_ok(_s, 8);
> if (copy_from_user(&s, _s, 8))
> FPU_abort;
> RE_ENTRANT_CHECK_ON;
> @@ -243,7 +243,7 @@ int FPU_load_int32(long __user *_s, FPU_REG *loaded_data)
> int negative;
>
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_READ, _s, 4);
> + FPU_access_ok(_s, 4);
> FPU_get_user(s, _s);
> RE_ENTRANT_CHECK_ON;
>
> @@ -271,7 +271,7 @@ int FPU_load_int16(short __user *_s, FPU_REG *loaded_data)
> int s, negative;
>
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_READ, _s, 2);
> + FPU_access_ok(_s, 2);
> /* Cast as short to get the sign extended. */
> FPU_get_user(s, _s);
> RE_ENTRANT_CHECK_ON;
> @@ -304,7 +304,7 @@ int FPU_load_bcd(u_char __user *s)
> int sign;
>
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_READ, s, 10);
> + FPU_access_ok(s, 10);
> RE_ENTRANT_CHECK_ON;
> for (pos = 8; pos >= 0; pos--) {
> l *= 10;
> @@ -345,7 +345,7 @@ int FPU_store_extended(FPU_REG *st0_ptr, u_char st0_tag,
>
> if (st0_tag != TAG_Empty) {
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_WRITE, d, 10);
> + FPU_access_ok(d, 10);
>
> FPU_put_user(st0_ptr->sigl, (unsigned long __user *)d);
> FPU_put_user(st0_ptr->sigh,
> @@ -364,7 +364,7 @@ int FPU_store_extended(FPU_REG *st0_ptr, u_char st0_tag,
> /* The masked response */
> /* Put out the QNaN indefinite */
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_WRITE, d, 10);
> + FPU_access_ok(d, 10);
> FPU_put_user(0, (unsigned long __user *)d);
> FPU_put_user(0xc0000000, 1 + (unsigned long __user *)d);
> FPU_put_user(0xffff, 4 + (short __user *)d);
> @@ -539,7 +539,7 @@ int FPU_store_double(FPU_REG *st0_ptr, u_char st0_tag, double __user *dfloat)
> /* The masked response */
> /* Put out the QNaN indefinite */
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_WRITE, dfloat, 8);
> + FPU_access_ok(dfloat, 8);
> FPU_put_user(0, (unsigned long __user *)dfloat);
> FPU_put_user(0xfff80000,
> 1 + (unsigned long __user *)dfloat);
> @@ -552,7 +552,7 @@ int FPU_store_double(FPU_REG *st0_ptr, u_char st0_tag, double __user *dfloat)
> l[1] |= 0x80000000;
>
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_WRITE, dfloat, 8);
> + FPU_access_ok(dfloat, 8);
> FPU_put_user(l[0], (unsigned long __user *)dfloat);
> FPU_put_user(l[1], 1 + (unsigned long __user *)dfloat);
> RE_ENTRANT_CHECK_ON;
> @@ -724,7 +724,7 @@ int FPU_store_single(FPU_REG *st0_ptr, u_char st0_tag, float __user *single)
> /* The masked response */
> /* Put out the QNaN indefinite */
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_WRITE, single, 4);
> + FPU_access_ok(single, 4);
> FPU_put_user(0xffc00000,
> (unsigned long __user *)single);
> RE_ENTRANT_CHECK_ON;
> @@ -742,7 +742,7 @@ int FPU_store_single(FPU_REG *st0_ptr, u_char st0_tag, float __user *single)
> templ |= 0x80000000;
>
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_WRITE, single, 4);
> + FPU_access_ok(single, 4);
> FPU_put_user(templ, (unsigned long __user *)single);
> RE_ENTRANT_CHECK_ON;
>
> @@ -791,7 +791,7 @@ int FPU_store_int64(FPU_REG *st0_ptr, u_char st0_tag, long long __user *d)
> }
>
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_WRITE, d, 8);
> + FPU_access_ok(d, 8);
> if (copy_to_user(d, &tll, 8))
> FPU_abort;
> RE_ENTRANT_CHECK_ON;
> @@ -838,7 +838,7 @@ int FPU_store_int32(FPU_REG *st0_ptr, u_char st0_tag, long __user *d)
> }
>
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_WRITE, d, 4);
> + FPU_access_ok(d, 4);
> FPU_put_user(t.sigl, (unsigned long __user *)d);
> RE_ENTRANT_CHECK_ON;
>
> @@ -884,7 +884,7 @@ int FPU_store_int16(FPU_REG *st0_ptr, u_char st0_tag, short __user *d)
> }
>
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_WRITE, d, 2);
> + FPU_access_ok(d, 2);
> FPU_put_user((short)t.sigl, d);
> RE_ENTRANT_CHECK_ON;
>
> @@ -925,7 +925,7 @@ int FPU_store_bcd(FPU_REG *st0_ptr, u_char st0_tag, u_char __user *d)
> if (control_word & CW_Invalid) {
> /* Produce the QNaN "indefinite" */
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_WRITE, d, 10);
> + FPU_access_ok(d, 10);
> for (i = 0; i < 7; i++)
> FPU_put_user(0, d + i); /* These bytes "undefined" */
> FPU_put_user(0xc0, d + 7); /* This byte "undefined" */
> @@ -941,7 +941,7 @@ int FPU_store_bcd(FPU_REG *st0_ptr, u_char st0_tag, u_char __user *d)
> }
>
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_WRITE, d, 10);
> + FPU_access_ok(d, 10);
> RE_ENTRANT_CHECK_ON;
> for (i = 0; i < 9; i++) {
> b = FPU_div_small(&ll, 10);
> @@ -1034,7 +1034,7 @@ u_char __user *fldenv(fpu_addr_modes addr_modes, u_char __user *s)
> ((addr_modes.default_mode == PM16)
> ^ (addr_modes.override.operand_size == OP_SIZE_PREFIX))) {
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_READ, s, 0x0e);
> + FPU_access_ok(s, 0x0e);
> FPU_get_user(control_word, (unsigned short __user *)s);
> FPU_get_user(partial_status, (unsigned short __user *)(s + 2));
> FPU_get_user(tag_word, (unsigned short __user *)(s + 4));
> @@ -1056,7 +1056,7 @@ u_char __user *fldenv(fpu_addr_modes addr_modes, u_char __user *s)
> }
> } else {
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_READ, s, 0x1c);
> + FPU_access_ok(s, 0x1c);
> FPU_get_user(control_word, (unsigned short __user *)s);
> FPU_get_user(partial_status, (unsigned short __user *)(s + 4));
> FPU_get_user(tag_word, (unsigned short __user *)(s + 8));
> @@ -1125,7 +1125,7 @@ void frstor(fpu_addr_modes addr_modes, u_char __user *data_address)
>
> /* Copy all registers in stack order. */
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_READ, s, 80);
> + FPU_access_ok(s, 80);
> __copy_from_user(register_base + offset, s, other);
> if (offset)
> __copy_from_user(register_base, s + other, offset);
> @@ -1146,7 +1146,7 @@ u_char __user *fstenv(fpu_addr_modes addr_modes, u_char __user *d)
> ((addr_modes.default_mode == PM16)
> ^ (addr_modes.override.operand_size == OP_SIZE_PREFIX))) {
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_WRITE, d, 14);
> + FPU_access_ok(d, 14);
> #ifdef PECULIAR_486
> FPU_put_user(control_word & ~0xe080, (unsigned long __user *)d);
> #else
> @@ -1174,7 +1174,7 @@ u_char __user *fstenv(fpu_addr_modes addr_modes, u_char __user *d)
> d += 0x0e;
> } else {
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_WRITE, d, 7 * 4);
> + FPU_access_ok(d, 7 * 4);
> #ifdef PECULIAR_486
> control_word &= ~0xe080;
> /* An 80486 sets nearly all of the reserved bits to 1. */
> @@ -1204,7 +1204,7 @@ void fsave(fpu_addr_modes addr_modes, u_char __user *data_address)
> d = fstenv(addr_modes, data_address);
>
> RE_ENTRANT_CHECK_OFF;
> - FPU_access_ok(VERIFY_WRITE, d, 80);
> + FPU_access_ok(d, 80);
>
> /* Copy all registers in stack order. */
> if (__copy_to_user(d, register_base + offset, other))
> diff --git a/arch/x86/mm/mpx.c b/arch/x86/mm/mpx.c
> index 2385538e8065..de1851d15699 100644
> --- a/arch/x86/mm/mpx.c
> +++ b/arch/x86/mm/mpx.c
> @@ -495,7 +495,7 @@ static int get_bt_addr(struct mm_struct *mm,
> unsigned long bd_entry;
> unsigned long bt_addr;
>
> - if (!access_ok(VERIFY_READ, (bd_entry_ptr), sizeof(*bd_entry_ptr)))
> + if (!access_ok((bd_entry_ptr), sizeof(*bd_entry_ptr)))
> return -EFAULT;
>
> while (1) {
> diff --git a/arch/x86/um/asm/checksum_32.h b/arch/x86/um/asm/checksum_32.h
> index 83a75f8a1233..b9ac7c9eb72c 100644
> --- a/arch/x86/um/asm/checksum_32.h
> +++ b/arch/x86/um/asm/checksum_32.h
> @@ -43,7 +43,7 @@ static __inline__ __wsum csum_and_copy_to_user(const void *src,
> void __user *dst,
> int len, __wsum sum, int *err_ptr)
> {
> - if (access_ok(VERIFY_WRITE, dst, len)) {
> + if (access_ok(dst, len)) {
> if (copy_to_user(dst, src, len)) {
> *err_ptr = -EFAULT;
> return (__force __wsum)-1;
> diff --git a/arch/x86/um/signal.c b/arch/x86/um/signal.c
> index 727ed442e0a5..8b4a71efe7ee 100644
> --- a/arch/x86/um/signal.c
> +++ b/arch/x86/um/signal.c
> @@ -367,7 +367,7 @@ int setup_signal_stack_sc(unsigned long stack_top, struct ksignal *ksig,
> /* This is the same calculation as i386 - ((sp + 4) & 15) == 0 */
> stack_top = ((stack_top + 4) & -16UL) - 4;
> frame = (struct sigframe __user *) stack_top - 1;
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> return 1;
>
> restorer = frame->retcode;
> @@ -412,7 +412,7 @@ int setup_signal_stack_si(unsigned long stack_top, struct ksignal *ksig,
>
> stack_top &= -8UL;
> frame = (struct rt_sigframe __user *) stack_top - 1;
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> return 1;
>
> restorer = frame->retcode;
> @@ -497,7 +497,7 @@ int setup_signal_stack_si(unsigned long stack_top, struct ksignal *ksig,
> /* Subtract 128 for a red zone and 8 for proper alignment */
> frame = (struct rt_sigframe __user *) ((unsigned long) frame - 128 - 8);
>
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto out;
>
> if (ksig->ka.sa.sa_flags & SA_SIGINFO) {
> diff --git a/arch/xtensa/include/asm/checksum.h b/arch/xtensa/include/asm/checksum.h
> index 3ae74d7e074b..f302ef57973a 100644
> --- a/arch/xtensa/include/asm/checksum.h
> +++ b/arch/xtensa/include/asm/checksum.h
> @@ -243,7 +243,7 @@ static __inline__ __wsum csum_and_copy_to_user(const void *src,
> void __user *dst, int len,
> __wsum sum, int *err_ptr)
> {
> - if (access_ok(VERIFY_WRITE, dst, len))
> + if (access_ok(dst, len))
> return csum_partial_copy_generic(src,dst,len,sum,NULL,err_ptr);
>
> if (len)
> diff --git a/arch/xtensa/include/asm/futex.h b/arch/xtensa/include/asm/futex.h
> index fd0eef6b8e7c..505d09eff184 100644
> --- a/arch/xtensa/include/asm/futex.h
> +++ b/arch/xtensa/include/asm/futex.h
> @@ -93,7 +93,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
> {
> int ret = 0;
>
> - if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
> + if (!access_ok(uaddr, sizeof(u32)))
> return -EFAULT;
>
> #if !XCHAL_HAVE_S32C1I
> diff --git a/arch/xtensa/include/asm/uaccess.h b/arch/xtensa/include/asm/uaccess.h
> index d11ef2939652..4b2480304bc3 100644
> --- a/arch/xtensa/include/asm/uaccess.h
> +++ b/arch/xtensa/include/asm/uaccess.h
> @@ -42,7 +42,7 @@
> #define __user_ok(addr, size) \
> (((size) <= TASK_SIZE)&&((addr) <= TASK_SIZE-(size)))
> #define __access_ok(addr, size) (__kernel_ok || __user_ok((addr), (size)))
> -#define access_ok(type, addr, size) __access_ok((unsigned long)(addr), (size))
> +#define access_ok(addr, size) __access_ok((unsigned long)(addr), (size))
>
> #define user_addr_max() (uaccess_kernel() ? ~0UL : TASK_SIZE)
>
> @@ -86,7 +86,7 @@ extern long __put_user_bad(void);
> ({ \
> long __pu_err = -EFAULT; \
> __typeof__(*(ptr)) *__pu_addr = (ptr); \
> - if (access_ok(VERIFY_WRITE, __pu_addr, size)) \
> + if (access_ok(__pu_addr, size)) \
> __put_user_size((x), __pu_addr, (size), __pu_err); \
> __pu_err; \
> })
> @@ -183,7 +183,7 @@ __asm__ __volatile__( \
> ({ \
> long __gu_err = -EFAULT, __gu_val = 0; \
> const __typeof__(*(ptr)) *__gu_addr = (ptr); \
> - if (access_ok(VERIFY_READ, __gu_addr, size)) \
> + if (access_ok(__gu_addr, size)) \
> __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \
> (x) = (__force __typeof__(*(ptr)))__gu_val; \
> __gu_err; \
> @@ -269,7 +269,7 @@ __xtensa_clear_user(void *addr, unsigned long size)
> static inline unsigned long
> clear_user(void *addr, unsigned long size)
> {
> - if (access_ok(VERIFY_WRITE, addr, size))
> + if (access_ok(addr, size))
> return __xtensa_clear_user(addr, size);
> return size ? -EFAULT : 0;
> }
> @@ -284,7 +284,7 @@ extern long __strncpy_user(char *, const char *, long);
> static inline long
> strncpy_from_user(char *dst, const char *src, long count)
> {
> - if (access_ok(VERIFY_READ, src, 1))
> + if (access_ok(src, 1))
> return __strncpy_user(dst, src, count);
> return -EFAULT;
> }
> diff --git a/arch/xtensa/kernel/signal.c b/arch/xtensa/kernel/signal.c
> index 74e1682876ac..dc22a238ed9c 100644
> --- a/arch/xtensa/kernel/signal.c
> +++ b/arch/xtensa/kernel/signal.c
> @@ -251,7 +251,7 @@ asmlinkage long xtensa_rt_sigreturn(long a0, long a1, long a2, long a3,
>
> frame = (struct rt_sigframe __user *) regs->areg[1];
>
> - if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
> + if (!access_ok(frame, sizeof(*frame)))
> goto badframe;
>
> if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
> @@ -348,7 +348,7 @@ static int setup_frame(struct ksignal *ksig, sigset_t *set,
> if (regs->depc > 64)
> panic ("Double exception sys_sigreturn\n");
>
> - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) {
> + if (!access_ok(frame, sizeof(*frame))) {
> return -EFAULT;
> }
>
> diff --git a/arch/xtensa/kernel/stacktrace.c b/arch/xtensa/kernel/stacktrace.c
> index 0df4080fa20f..174c11f13bba 100644
> --- a/arch/xtensa/kernel/stacktrace.c
> +++ b/arch/xtensa/kernel/stacktrace.c
> @@ -91,7 +91,7 @@ void xtensa_backtrace_user(struct pt_regs *regs, unsigned int depth,
> pc = MAKE_PC_FROM_RA(a0, pc);
>
> /* Check if the region is OK to access. */
> - if (!access_ok(VERIFY_READ, &SPILL_SLOT(a1, 0), 8))
> + if (!access_ok(&SPILL_SLOT(a1, 0), 8))
> return;
> /* Copy a1, a0 from user space stack frame. */
> if (__get_user(a0, &SPILL_SLOT(a1, 0)) ||
> diff --git a/drivers/acpi/acpi_dbg.c b/drivers/acpi/acpi_dbg.c
> index f21c99ec46ee..a2dcd62ea32f 100644
> --- a/drivers/acpi/acpi_dbg.c
> +++ b/drivers/acpi/acpi_dbg.c
> @@ -614,7 +614,7 @@ static ssize_t acpi_aml_read(struct file *file, char __user *buf,
>
> if (!count)
> return 0;
> - if (!access_ok(VERIFY_WRITE, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT;
>
> while (count > 0) {
> @@ -684,7 +684,7 @@ static ssize_t acpi_aml_write(struct file *file, const char __user *buf,
>
> if (!count)
> return 0;
> - if (!access_ok(VERIFY_READ, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT;
>
> while (count > 0) {
> diff --git a/drivers/char/generic_nvram.c b/drivers/char/generic_nvram.c
> index 14e728fbb8a0..ff5394f47587 100644
> --- a/drivers/char/generic_nvram.c
> +++ b/drivers/char/generic_nvram.c
> @@ -44,7 +44,7 @@ static ssize_t read_nvram(struct file *file, char __user *buf,
> unsigned int i;
> char __user *p = buf;
>
> - if (!access_ok(VERIFY_WRITE, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT;
> if (*ppos >= nvram_len)
> return 0;
> @@ -62,7 +62,7 @@ static ssize_t write_nvram(struct file *file, const char __user *buf,
> const char __user *p = buf;
> char c;
>
> - if (!access_ok(VERIFY_READ, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT;
> if (*ppos >= nvram_len)
> return 0;
> diff --git a/drivers/char/mem.c b/drivers/char/mem.c
> index 7b4e4de778e4..b08dc50f9f26 100644
> --- a/drivers/char/mem.c
> +++ b/drivers/char/mem.c
> @@ -609,7 +609,7 @@ static ssize_t read_port(struct file *file, char __user *buf,
> unsigned long i = *ppos;
> char __user *tmp = buf;
>
> - if (!access_ok(VERIFY_WRITE, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT;
> while (count-- > 0 && i < 65536) {
> if (__put_user(inb(i), tmp) < 0)
> @@ -627,7 +627,7 @@ static ssize_t write_port(struct file *file, const char __user *buf,
> unsigned long i = *ppos;
> const char __user *tmp = buf;
>
> - if (!access_ok(VERIFY_READ, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT;
> while (count-- > 0 && i < 65536) {
> char c;
> diff --git a/drivers/char/nwflash.c b/drivers/char/nwflash.c
> index a284ae25e69a..76fb434068d4 100644
> --- a/drivers/char/nwflash.c
> +++ b/drivers/char/nwflash.c
> @@ -167,7 +167,7 @@ static ssize_t flash_write(struct file *file, const char __user *buf,
> if (count > gbFlashSize - p)
> count = gbFlashSize - p;
>
> - if (!access_ok(VERIFY_READ, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT;
>
> /*
> diff --git a/drivers/char/pcmcia/cm4000_cs.c b/drivers/char/pcmcia/cm4000_cs.c
> index 809507bf8f1c..7a4eb86aedac 100644
> --- a/drivers/char/pcmcia/cm4000_cs.c
> +++ b/drivers/char/pcmcia/cm4000_cs.c
> @@ -1445,11 +1445,11 @@ static long cmm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
> _IOC_DIR(cmd), _IOC_READ, _IOC_WRITE, size, cmd);
>
> if (_IOC_DIR(cmd) & _IOC_READ) {
> - if (!access_ok(VERIFY_WRITE, argp, size))
> + if (!access_ok(argp, size))
> goto out;
> }
> if (_IOC_DIR(cmd) & _IOC_WRITE) {
> - if (!access_ok(VERIFY_READ, argp, size))
> + if (!access_ok(argp, size))
> goto out;
> }
> rc = 0;
> diff --git a/drivers/crypto/ccp/psp-dev.c b/drivers/crypto/ccp/psp-dev.c
> index d64a78ccc03e..b16be8a11d92 100644
> --- a/drivers/crypto/ccp/psp-dev.c
> +++ b/drivers/crypto/ccp/psp-dev.c
> @@ -364,7 +364,7 @@ static int sev_ioctl_do_pek_csr(struct sev_issue_cmd *argp)
> goto cmd;
>
> /* allocate a physically contiguous buffer to store the CSR blob */
> - if (!access_ok(VERIFY_WRITE, input.address, input.length) ||
> + if (!access_ok(input.address, input.length) ||
> input.length > SEV_FW_BLOB_MAX_SIZE) {
> ret = -EFAULT;
> goto e_free;
> @@ -644,14 +644,14 @@ static int sev_ioctl_do_pdh_export(struct sev_issue_cmd *argp)
>
> /* Allocate a physically contiguous buffer to store the PDH blob. */
> if ((input.pdh_cert_len > SEV_FW_BLOB_MAX_SIZE) ||
> - !access_ok(VERIFY_WRITE, input.pdh_cert_address, input.pdh_cert_len)) {
> + !access_ok(input.pdh_cert_address, input.pdh_cert_len)) {
> ret = -EFAULT;
> goto e_free;
> }
>
> /* Allocate a physically contiguous buffer to store the cert chain blob. */
> if ((input.cert_chain_len > SEV_FW_BLOB_MAX_SIZE) ||
> - !access_ok(VERIFY_WRITE, input.cert_chain_address, input.cert_chain_len)) {
> + !access_ok(input.cert_chain_address, input.cert_chain_len)) {
> ret = -EFAULT;
> goto e_free;
> }
> diff --git a/drivers/firewire/core-cdev.c b/drivers/firewire/core-cdev.c
> index d8e185582642..16a7045736a9 100644
> --- a/drivers/firewire/core-cdev.c
> +++ b/drivers/firewire/core-cdev.c
> @@ -1094,7 +1094,7 @@ static int ioctl_queue_iso(struct client *client, union ioctl_arg *arg)
> return -EINVAL;
>
> p = (struct fw_cdev_iso_packet __user *)u64_to_uptr(a->packets);
> - if (!access_ok(VERIFY_READ, p, a->size))
> + if (!access_ok(p, a->size))
> return -EFAULT;
>
> end = (void __user *)p + a->size;
> diff --git a/drivers/firmware/efi/test/efi_test.c b/drivers/firmware/efi/test/efi_test.c
> index 769640940c9f..51ecf7d6da48 100644
> --- a/drivers/firmware/efi/test/efi_test.c
> +++ b/drivers/firmware/efi/test/efi_test.c
> @@ -68,7 +68,7 @@ copy_ucs2_from_user_len(efi_char16_t **dst, efi_char16_t __user *src,
> return 0;
> }
>
> - if (!access_ok(VERIFY_READ, src, 1))
> + if (!access_ok(src, 1))
> return -EFAULT;
>
> buf = memdup_user(src, len);
> @@ -89,7 +89,7 @@ copy_ucs2_from_user_len(efi_char16_t **dst, efi_char16_t __user *src,
> static inline int
> get_ucs2_strsize_from_user(efi_char16_t __user *src, size_t *len)
> {
> - if (!access_ok(VERIFY_READ, src, 1))
> + if (!access_ok(src, 1))
> return -EFAULT;
>
> *len = user_ucs2_strsize(src);
> @@ -116,7 +116,7 @@ copy_ucs2_from_user(efi_char16_t **dst, efi_char16_t __user *src)
> {
> size_t len;
>
> - if (!access_ok(VERIFY_READ, src, 1))
> + if (!access_ok(src, 1))
> return -EFAULT;
>
> len = user_ucs2_strsize(src);
> @@ -140,7 +140,7 @@ copy_ucs2_to_user_len(efi_char16_t __user *dst, efi_char16_t *src, size_t len)
> if (!src)
> return 0;
>
> - if (!access_ok(VERIFY_WRITE, dst, 1))
> + if (!access_ok(dst, 1))
> return -EFAULT;
>
> return copy_to_user(dst, src, len);
> diff --git a/drivers/fpga/dfl-afu-dma-region.c b/drivers/fpga/dfl-afu-dma-region.c
> index 025aba3ea76c..e18a786fc943 100644
> --- a/drivers/fpga/dfl-afu-dma-region.c
> +++ b/drivers/fpga/dfl-afu-dma-region.c
> @@ -369,7 +369,7 @@ int afu_dma_map_region(struct dfl_feature_platform_data *pdata,
> if (user_addr + length < user_addr)
> return -EINVAL;
>
> - if (!access_ok(VERIFY_WRITE, (void __user *)(unsigned long)user_addr,
> + if (!access_ok((void __user *)(unsigned long)user_addr,
> length))
> return -EINVAL;
>
> diff --git a/drivers/fpga/dfl-fme-pr.c b/drivers/fpga/dfl-fme-pr.c
> index fe5a5578fbf7..d9ca9554844a 100644
> --- a/drivers/fpga/dfl-fme-pr.c
> +++ b/drivers/fpga/dfl-fme-pr.c
> @@ -99,8 +99,7 @@ static int fme_pr(struct platform_device *pdev, unsigned long arg)
> return -EINVAL;
> }
>
> - if (!access_ok(VERIFY_READ,
> - (void __user *)(unsigned long)port_pr.buffer_address,
> + if (!access_ok((void __user *)(unsigned long)port_pr.buffer_address,
> port_pr.buffer_size))
> return -EFAULT;
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
> index 3623538baf6f..be68752c3469 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
> @@ -158,8 +158,7 @@ static int set_queue_properties_from_user(struct queue_properties *q_properties,
> }
>
> if ((args->ring_base_address) &&
> - (!access_ok(VERIFY_WRITE,
> - (const void __user *) args->ring_base_address,
> + (!access_ok((const void __user *) args->ring_base_address,
> sizeof(uint64_t)))) {
> pr_err("Can't access ring base address\n");
> return -EFAULT;
> @@ -170,31 +169,27 @@ static int set_queue_properties_from_user(struct queue_properties *q_properties,
> return -EINVAL;
> }
>
> - if (!access_ok(VERIFY_WRITE,
> - (const void __user *) args->read_pointer_address,
> + if (!access_ok((const void __user *) args->read_pointer_address,
> sizeof(uint32_t))) {
> pr_err("Can't access read pointer\n");
> return -EFAULT;
> }
>
> - if (!access_ok(VERIFY_WRITE,
> - (const void __user *) args->write_pointer_address,
> + if (!access_ok((const void __user *) args->write_pointer_address,
> sizeof(uint32_t))) {
> pr_err("Can't access write pointer\n");
> return -EFAULT;
> }
>
> if (args->eop_buffer_address &&
> - !access_ok(VERIFY_WRITE,
> - (const void __user *) args->eop_buffer_address,
> + !access_ok((const void __user *) args->eop_buffer_address,
> sizeof(uint32_t))) {
> pr_debug("Can't access eop buffer");
> return -EFAULT;
> }
>
> if (args->ctx_save_restore_address &&
> - !access_ok(VERIFY_WRITE,
> - (const void __user *) args->ctx_save_restore_address,
> + !access_ok((const void __user *) args->ctx_save_restore_address,
> sizeof(uint32_t))) {
> pr_debug("Can't access ctx save restore buffer");
> return -EFAULT;
> @@ -365,8 +360,7 @@ static int kfd_ioctl_update_queue(struct file *filp, struct kfd_process *p,
> }
>
> if ((args->ring_base_address) &&
> - (!access_ok(VERIFY_WRITE,
> - (const void __user *) args->ring_base_address,
> + (!access_ok((const void __user *) args->ring_base_address,
> sizeof(uint64_t)))) {
> pr_err("Can't access ring base address\n");
> return -EFAULT;
> diff --git a/drivers/gpu/drm/armada/armada_gem.c b/drivers/gpu/drm/armada/armada_gem.c
> index 892c1d9304bb..642d0e70d0f8 100644
> --- a/drivers/gpu/drm/armada/armada_gem.c
> +++ b/drivers/gpu/drm/armada/armada_gem.c
> @@ -334,7 +334,7 @@ int armada_gem_pwrite_ioctl(struct drm_device *dev, void *data,
>
> ptr = (char __user *)(uintptr_t)args->ptr;
>
> - if (!access_ok(VERIFY_READ, ptr, args->size))
> + if (!access_ok(ptr, args->size))
> return -EFAULT;
>
> ret = fault_in_pages_readable(ptr, args->size);
> diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c
> index ffa8dc35515f..46f48f245eb5 100644
> --- a/drivers/gpu/drm/drm_file.c
> +++ b/drivers/gpu/drm/drm_file.c
> @@ -525,7 +525,7 @@ ssize_t drm_read(struct file *filp, char __user *buffer,
> struct drm_device *dev = file_priv->minor->dev;
> ssize_t ret;
>
> - if (!access_ok(VERIFY_WRITE, buffer, count))
> + if (!access_ok(buffer, count))
> return -EFAULT;
>
> ret = mutex_lock_interruptible(&file_priv->event_read_lock);
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> index 96efc84396bf..18c27f795cf6 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> @@ -339,7 +339,6 @@ static int etnaviv_ioctl_gem_userptr(struct drm_device *dev, void *data,
> struct drm_file *file)
> {
> struct drm_etnaviv_gem_userptr *args = data;
> - int access;
>
> if (args->flags & ~(ETNA_USERPTR_READ|ETNA_USERPTR_WRITE) ||
> args->flags == 0)
> @@ -351,12 +350,7 @@ static int etnaviv_ioctl_gem_userptr(struct drm_device *dev, void *data,
> args->user_ptr & ~PAGE_MASK)
> return -EINVAL;
>
> - if (args->flags & ETNA_USERPTR_WRITE)
> - access = VERIFY_WRITE;
> - else
> - access = VERIFY_READ;
> -
> - if (!access_ok(access, (void __user *)(unsigned long)args->user_ptr,
> + if (!access_ok((void __user *)(unsigned long)args->user_ptr,
> args->user_size))
> return -EFAULT;
>
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index a9de07bb72c8..216f52b744a6 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -1282,8 +1282,7 @@ i915_gem_pread_ioctl(struct drm_device *dev, void *data,
> if (args->size == 0)
> return 0;
>
> - if (!access_ok(VERIFY_WRITE,
> - u64_to_user_ptr(args->data_ptr),
> + if (!access_ok(u64_to_user_ptr(args->data_ptr),
> args->size))
> return -EFAULT;
>
> @@ -1609,9 +1608,7 @@ i915_gem_pwrite_ioctl(struct drm_device *dev, void *data,
> if (args->size == 0)
> return 0;
>
> - if (!access_ok(VERIFY_READ,
> - u64_to_user_ptr(args->data_ptr),
> - args->size))
> + if (!access_ok(u64_to_user_ptr(args->data_ptr), args->size))
> return -EFAULT;
>
> obj = i915_gem_object_lookup(file, args->handle);
> diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> index 8ff6b581cf1c..fee66ccebed6 100644
> --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> @@ -1447,7 +1447,7 @@ static int eb_relocate_vma(struct i915_execbuffer *eb, struct i915_vma *vma)
> * to read. However, if the array is not writable the user loses
> * the updated relocation values.
> */
> - if (unlikely(!access_ok(VERIFY_READ, urelocs, remain*sizeof(*urelocs))))
> + if (unlikely(!access_ok(urelocs, remain*sizeof(*urelocs))))
> return -EFAULT;
>
> do {
> @@ -1554,7 +1554,7 @@ static int check_relocations(const struct drm_i915_gem_exec_object2 *entry)
>
> addr = u64_to_user_ptr(entry->relocs_ptr);
> size *= sizeof(struct drm_i915_gem_relocation_entry);
> - if (!access_ok(VERIFY_READ, addr, size))
> + if (!access_ok(addr, size))
> return -EFAULT;
>
> end = addr + size;
> @@ -2090,7 +2090,7 @@ get_fence_array(struct drm_i915_gem_execbuffer2 *args,
> return ERR_PTR(-EINVAL);
>
> user = u64_to_user_ptr(args->cliprects_ptr);
> - if (!access_ok(VERIFY_READ, user, nfences * sizeof(*user)))
> + if (!access_ok(user, nfences * sizeof(*user)))
> return ERR_PTR(-EFAULT);
>
> fences = kvmalloc_array(nfences, sizeof(*fences),
> diff --git a/drivers/gpu/drm/i915/i915_gem_userptr.c b/drivers/gpu/drm/i915/i915_gem_userptr.c
> index 3df77020aada..9558582c105e 100644
> --- a/drivers/gpu/drm/i915/i915_gem_userptr.c
> +++ b/drivers/gpu/drm/i915/i915_gem_userptr.c
> @@ -789,8 +789,7 @@ i915_gem_userptr_ioctl(struct drm_device *dev,
> if (offset_in_page(args->user_ptr | args->user_size))
> return -EINVAL;
>
> - if (!access_ok(args->flags & I915_USERPTR_READ_ONLY ? VERIFY_READ : VERIFY_WRITE,
> - (char __user *)(unsigned long)args->user_ptr, args->user_size))
> + if (!access_ok((char __user *)(unsigned long)args->user_ptr, args->user_size))
> return -EFAULT;
>
> if (args->flags & I915_USERPTR_READ_ONLY) {
> diff --git a/drivers/gpu/drm/i915/i915_ioc32.c b/drivers/gpu/drm/i915/i915_ioc32.c
> index 0e5c580d117c..e869daf9c8a9 100644
> --- a/drivers/gpu/drm/i915/i915_ioc32.c
> +++ b/drivers/gpu/drm/i915/i915_ioc32.c
> @@ -52,7 +52,7 @@ static int compat_i915_getparam(struct file *file, unsigned int cmd,
> return -EFAULT;
>
> request = compat_alloc_user_space(sizeof(*request));
> - if (!access_ok(VERIFY_WRITE, request, sizeof(*request)) ||
> + if (!access_ok(request, sizeof(*request)) ||
> __put_user(req32.param, &request->param) ||
> __put_user((void __user *)(unsigned long)req32.value,
> &request->value))
> diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
> index 4529edfdcfc8..2b2eb57ca71f 100644
> --- a/drivers/gpu/drm/i915/i915_perf.c
> +++ b/drivers/gpu/drm/i915/i915_perf.c
> @@ -3052,7 +3052,7 @@ static struct i915_oa_reg *alloc_oa_regs(struct drm_i915_private *dev_priv,
> if (!n_regs)
> return NULL;
>
> - if (!access_ok(VERIFY_READ, regs, n_regs * sizeof(u32) * 2))
> + if (!access_ok(regs, n_regs * sizeof(u32) * 2))
> return ERR_PTR(-EFAULT);
>
> /* No is_valid function means we're not allowing any register to be programmed. */
> diff --git a/drivers/gpu/drm/i915/i915_query.c b/drivers/gpu/drm/i915/i915_query.c
> index 6fc4b8eeab42..fe56465cdfd6 100644
> --- a/drivers/gpu/drm/i915/i915_query.c
> +++ b/drivers/gpu/drm/i915/i915_query.c
> @@ -46,7 +46,7 @@ static int query_topology_info(struct drm_i915_private *dev_priv,
> if (topo.flags != 0)
> return -EINVAL;
>
> - if (!access_ok(VERIFY_WRITE, u64_to_user_ptr(query_item->data_ptr),
> + if (!access_ok(u64_to_user_ptr(query_item->data_ptr),
> total_length))
> return -EFAULT;
>
> diff --git a/drivers/gpu/drm/msm/msm_gem_submit.c b/drivers/gpu/drm/msm/msm_gem_submit.c
> index a28465d90529..12b983fc0b56 100644
> --- a/drivers/gpu/drm/msm/msm_gem_submit.c
> +++ b/drivers/gpu/drm/msm/msm_gem_submit.c
> @@ -77,7 +77,7 @@ void msm_gem_submit_free(struct msm_gem_submit *submit)
> static inline unsigned long __must_check
> copy_from_user_inatomic(void *to, const void __user *from, unsigned long n)
> {
> - if (access_ok(VERIFY_READ, from, n))
> + if (access_ok(from, n))
> return __copy_from_user_inatomic(to, from, n);
> return -EFAULT;
> }
> diff --git a/drivers/gpu/drm/qxl/qxl_ioctl.c b/drivers/gpu/drm/qxl/qxl_ioctl.c
> index 6e828158bcb0..d410e2925162 100644
> --- a/drivers/gpu/drm/qxl/qxl_ioctl.c
> +++ b/drivers/gpu/drm/qxl/qxl_ioctl.c
> @@ -163,8 +163,7 @@ static int qxl_process_single_command(struct qxl_device *qdev,
> if (cmd->command_size > PAGE_SIZE - sizeof(union qxl_release_info))
> return -EINVAL;
>
> - if (!access_ok(VERIFY_READ,
> - u64_to_user_ptr(cmd->command),
> + if (!access_ok(u64_to_user_ptr(cmd->command),
> cmd->command_size))
> return -EFAULT;
>
> diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c
> index 9f9172eb1512..fb0007aa0c27 100644
> --- a/drivers/infiniband/core/uverbs_main.c
> +++ b/drivers/infiniband/core/uverbs_main.c
> @@ -611,8 +611,7 @@ static ssize_t verify_hdr(struct ib_uverbs_cmd_hdr *hdr,
> if (hdr->out_words * 8 < method_elm->resp_size)
> return -ENOSPC;
>
> - if (!access_ok(VERIFY_WRITE,
> - u64_to_user_ptr(ex_hdr->response),
> + if (!access_ok(u64_to_user_ptr(ex_hdr->response),
> (hdr->out_words + ex_hdr->provider_out_words) * 8))
> return -EFAULT;
> } else {
> diff --git a/drivers/infiniband/hw/hfi1/user_exp_rcv.c b/drivers/infiniband/hw/hfi1/user_exp_rcv.c
> index dbe7d14a5c76..0cd71ce7cc71 100644
> --- a/drivers/infiniband/hw/hfi1/user_exp_rcv.c
> +++ b/drivers/infiniband/hw/hfi1/user_exp_rcv.c
> @@ -232,7 +232,7 @@ static int pin_rcv_pages(struct hfi1_filedata *fd, struct tid_user_buf *tidbuf)
> }
>
> /* Verify that access is OK for the user buffer */
> - if (!access_ok(VERIFY_WRITE, (void __user *)vaddr,
> + if (!access_ok((void __user *)vaddr,
> npages * PAGE_SIZE)) {
> dd_dev_err(dd, "Fail vaddr %p, %u pages, !access_ok\n",
> (void *)vaddr, npages);
> diff --git a/drivers/infiniband/hw/qib/qib_file_ops.c b/drivers/infiniband/hw/qib/qib_file_ops.c
> index 98e1ce14fa2a..78fa634de98a 100644
> --- a/drivers/infiniband/hw/qib/qib_file_ops.c
> +++ b/drivers/infiniband/hw/qib/qib_file_ops.c
> @@ -343,7 +343,7 @@ static int qib_tid_update(struct qib_ctxtdata *rcd, struct file *fp,
>
> /* virtual address of first page in transfer */
> vaddr = ti->tidvaddr;
> - if (!access_ok(VERIFY_WRITE, (void __user *) vaddr,
> + if (!access_ok((void __user *) vaddr,
> cnt * PAGE_SIZE)) {
> ret = -EFAULT;
> goto done;
> diff --git a/drivers/macintosh/ans-lcd.c b/drivers/macintosh/ans-lcd.c
> index ef0c2366cf59..400960cf04d5 100644
> --- a/drivers/macintosh/ans-lcd.c
> +++ b/drivers/macintosh/ans-lcd.c
> @@ -64,7 +64,7 @@ anslcd_write( struct file * file, const char __user * buf,
> printk(KERN_DEBUG "LCD: write\n");
> #endif
>
> - if (!access_ok(VERIFY_READ, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT;
>
> mutex_lock(&anslcd_mutex);
> diff --git a/drivers/macintosh/via-pmu.c b/drivers/macintosh/via-pmu.c
> index ac0cf37d6239..21d532a78fa4 100644
> --- a/drivers/macintosh/via-pmu.c
> +++ b/drivers/macintosh/via-pmu.c
> @@ -2188,7 +2188,7 @@ pmu_read(struct file *file, char __user *buf,
>
> if (count < 1 || !pp)
> return -EINVAL;
> - if (!access_ok(VERIFY_WRITE, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT;
>
> spin_lock_irqsave(&pp->lock, flags);
> diff --git a/drivers/media/pci/ivtv/ivtvfb.c b/drivers/media/pci/ivtv/ivtvfb.c
> index 3e02de02ffdd..8ec2525d8ef5 100644
> --- a/drivers/media/pci/ivtv/ivtvfb.c
> +++ b/drivers/media/pci/ivtv/ivtvfb.c
> @@ -356,7 +356,7 @@ static int ivtvfb_prep_frame(struct ivtv *itv, int cmd, void __user *source,
> IVTVFB_WARN("ivtvfb_prep_frame: Count not a multiple of 4 (%d)\n", count);
>
> /* Check Source */
> - if (!access_ok(VERIFY_READ, source + dest_offset, count)) {
> + if (!access_ok(source + dest_offset, count)) {
> IVTVFB_WARN("Invalid userspace pointer %p\n", source);
>
> IVTVFB_DEBUG_WARN("access_ok() failed for offset 0x%08lx source %p count %d\n",
> diff --git a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
> index fe4577a46869..73dac1d8d4f6 100644
> --- a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
> +++ b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
> @@ -158,7 +158,7 @@ static int get_v4l2_window32(struct v4l2_window __user *p64,
> compat_caddr_t p;
> u32 clipcount;
>
> - if (!access_ok(VERIFY_READ, p32, sizeof(*p32)) ||
> + if (!access_ok(p32, sizeof(*p32)) ||
> copy_in_user(&p64->w, &p32->w, sizeof(p32->w)) ||
> assign_in_user(&p64->field, &p32->field) ||
> assign_in_user(&p64->chromakey, &p32->chromakey) ||
> @@ -283,7 +283,7 @@ static int __bufsize_v4l2_format(struct v4l2_format32 __user *p32, u32 *size)
>
> static int bufsize_v4l2_format(struct v4l2_format32 __user *p32, u32 *size)
> {
> - if (!access_ok(VERIFY_READ, p32, sizeof(*p32)))
> + if (!access_ok(p32, sizeof(*p32)))
> return -EFAULT;
> return __bufsize_v4l2_format(p32, size);
> }
> @@ -335,7 +335,7 @@ static int get_v4l2_format32(struct v4l2_format __user *p64,
> struct v4l2_format32 __user *p32,
> void __user *aux_buf, u32 aux_space)
> {
> - if (!access_ok(VERIFY_READ, p32, sizeof(*p32)))
> + if (!access_ok(p32, sizeof(*p32)))
> return -EFAULT;
> return __get_v4l2_format32(p64, p32, aux_buf, aux_space);
> }
> @@ -343,7 +343,7 @@ static int get_v4l2_format32(struct v4l2_format __user *p64,
> static int bufsize_v4l2_create(struct v4l2_create_buffers32 __user *p32,
> u32 *size)
> {
> - if (!access_ok(VERIFY_READ, p32, sizeof(*p32)))
> + if (!access_ok(p32, sizeof(*p32)))
> return -EFAULT;
> return __bufsize_v4l2_format(&p32->format, size);
> }
> @@ -352,7 +352,7 @@ static int get_v4l2_create32(struct v4l2_create_buffers __user *p64,
> struct v4l2_create_buffers32 __user *p32,
> void __user *aux_buf, u32 aux_space)
> {
> - if (!access_ok(VERIFY_READ, p32, sizeof(*p32)) ||
> + if (!access_ok(p32, sizeof(*p32)) ||
> copy_in_user(p64, p32,
> offsetof(struct v4l2_create_buffers32, format)))
> return -EFAULT;
> @@ -404,7 +404,7 @@ static int __put_v4l2_format32(struct v4l2_format __user *p64,
> static int put_v4l2_format32(struct v4l2_format __user *p64,
> struct v4l2_format32 __user *p32)
> {
> - if (!access_ok(VERIFY_WRITE, p32, sizeof(*p32)))
> + if (!access_ok(p32, sizeof(*p32)))
> return -EFAULT;
> return __put_v4l2_format32(p64, p32);
> }
> @@ -412,7 +412,7 @@ static int put_v4l2_format32(struct v4l2_format __user *p64,
> static int put_v4l2_create32(struct v4l2_create_buffers __user *p64,
> struct v4l2_create_buffers32 __user *p32)
> {
> - if (!access_ok(VERIFY_WRITE, p32, sizeof(*p32)) ||
> + if (!access_ok(p32, sizeof(*p32)) ||
> copy_in_user(p32, p64,
> offsetof(struct v4l2_create_buffers32, format)) ||
> assign_in_user(&p32->capabilities, &p64->capabilities) ||
> @@ -434,7 +434,7 @@ static int get_v4l2_standard32(struct v4l2_standard __user *p64,
> struct v4l2_standard32 __user *p32)
> {
> /* other fields are not set by the user, nor used by the driver */
> - if (!access_ok(VERIFY_READ, p32, sizeof(*p32)) ||
> + if (!access_ok(p32, sizeof(*p32)) ||
> assign_in_user(&p64->index, &p32->index))
> return -EFAULT;
> return 0;
> @@ -443,7 +443,7 @@ static int get_v4l2_standard32(struct v4l2_standard __user *p64,
> static int put_v4l2_standard32(struct v4l2_standard __user *p64,
> struct v4l2_standard32 __user *p32)
> {
> - if (!access_ok(VERIFY_WRITE, p32, sizeof(*p32)) ||
> + if (!access_ok(p32, sizeof(*p32)) ||
> assign_in_user(&p32->index, &p64->index) ||
> assign_in_user(&p32->id, &p64->id) ||
> copy_in_user(p32->name, p64->name, sizeof(p32->name)) ||
> @@ -560,7 +560,7 @@ static int bufsize_v4l2_buffer(struct v4l2_buffer32 __user *p32, u32 *size)
> u32 type;
> u32 length;
>
> - if (!access_ok(VERIFY_READ, p32, sizeof(*p32)) ||
> + if (!access_ok(p32, sizeof(*p32)) ||
> get_user(type, &p32->type) ||
> get_user(length, &p32->length))
> return -EFAULT;
> @@ -593,7 +593,7 @@ static int get_v4l2_buffer32(struct v4l2_buffer __user *p64,
> compat_caddr_t p;
> int ret;
>
> - if (!access_ok(VERIFY_READ, p32, sizeof(*p32)) ||
> + if (!access_ok(p32, sizeof(*p32)) ||
> assign_in_user(&p64->index, &p32->index) ||
> get_user(type, &p32->type) ||
> put_user(type, &p64->type) ||
> @@ -632,7 +632,7 @@ static int get_v4l2_buffer32(struct v4l2_buffer __user *p64,
> return -EFAULT;
>
> uplane32 = compat_ptr(p);
> - if (!access_ok(VERIFY_READ, uplane32,
> + if (!access_ok(uplane32,
> num_planes * sizeof(*uplane32)))
> return -EFAULT;
>
> @@ -691,7 +691,7 @@ static int put_v4l2_buffer32(struct v4l2_buffer __user *p64,
> compat_caddr_t p;
> int ret;
>
> - if (!access_ok(VERIFY_WRITE, p32, sizeof(*p32)) ||
> + if (!access_ok(p32, sizeof(*p32)) ||
> assign_in_user(&p32->index, &p64->index) ||
> get_user(type, &p64->type) ||
> put_user(type, &p32->type) ||
> @@ -781,7 +781,7 @@ static int get_v4l2_framebuffer32(struct v4l2_framebuffer __user *p64,
> {
> compat_caddr_t tmp;
>
> - if (!access_ok(VERIFY_READ, p32, sizeof(*p32)) ||
> + if (!access_ok(p32, sizeof(*p32)) ||
> get_user(tmp, &p32->base) ||
> put_user_force(compat_ptr(tmp), &p64->base) ||
> assign_in_user(&p64->capability, &p32->capability) ||
> @@ -796,7 +796,7 @@ static int put_v4l2_framebuffer32(struct v4l2_framebuffer __user *p64,
> {
> void *base;
>
> - if (!access_ok(VERIFY_WRITE, p32, sizeof(*p32)) ||
> + if (!access_ok(p32, sizeof(*p32)) ||
> get_user(base, &p64->base) ||
> put_user(ptr_to_compat((void __user *)base), &p32->base) ||
> assign_in_user(&p32->capability, &p64->capability) ||
> @@ -893,7 +893,7 @@ static int bufsize_v4l2_ext_controls(struct v4l2_ext_controls32 __user *p32,
> {
> u32 count;
>
> - if (!access_ok(VERIFY_READ, p32, sizeof(*p32)) ||
> + if (!access_ok(p32, sizeof(*p32)) ||
> get_user(count, &p32->count))
> return -EFAULT;
> if (count > V4L2_CID_MAX_CTRLS)
> @@ -913,7 +913,7 @@ static int get_v4l2_ext_controls32(struct file *file,
> u32 n;
> compat_caddr_t p;
>
> - if (!access_ok(VERIFY_READ, p32, sizeof(*p32)) ||
> + if (!access_ok(p32, sizeof(*p32)) ||
> assign_in_user(&p64->which, &p32->which) ||
> get_user(count, &p32->count) ||
> put_user(count, &p64->count) ||
> @@ -929,7 +929,7 @@ static int get_v4l2_ext_controls32(struct file *file,
> if (get_user(p, &p32->controls))
> return -EFAULT;
> ucontrols = compat_ptr(p);
> - if (!access_ok(VERIFY_READ, ucontrols, count * sizeof(*ucontrols)))
> + if (!access_ok(ucontrols, count * sizeof(*ucontrols)))
> return -EFAULT;
> if (aux_space < count * sizeof(*kcontrols))
> return -EFAULT;
> @@ -979,7 +979,7 @@ static int put_v4l2_ext_controls32(struct file *file,
> * with __user causes smatch warnings, so instead declare it
> * without __user and cast it as a userspace pointer where needed.
> */
> - if (!access_ok(VERIFY_WRITE, p32, sizeof(*p32)) ||
> + if (!access_ok(p32, sizeof(*p32)) ||
> assign_in_user(&p32->which, &p64->which) ||
> get_user(count, &p64->count) ||
> put_user(count, &p32->count) ||
> @@ -994,7 +994,7 @@ static int put_v4l2_ext_controls32(struct file *file,
> if (get_user(p, &p32->controls))
> return -EFAULT;
> ucontrols = compat_ptr(p);
> - if (!access_ok(VERIFY_WRITE, ucontrols, count * sizeof(*ucontrols)))
> + if (!access_ok(ucontrols, count * sizeof(*ucontrols)))
> return -EFAULT;
>
> for (n = 0; n < count; n++) {
> @@ -1043,7 +1043,7 @@ struct v4l2_event32 {
> static int put_v4l2_event32(struct v4l2_event __user *p64,
> struct v4l2_event32 __user *p32)
> {
> - if (!access_ok(VERIFY_WRITE, p32, sizeof(*p32)) ||
> + if (!access_ok(p32, sizeof(*p32)) ||
> assign_in_user(&p32->type, &p64->type) ||
> copy_in_user(&p32->u, &p64->u, sizeof(p64->u)) ||
> assign_in_user(&p32->pending, &p64->pending) ||
> @@ -1069,7 +1069,7 @@ static int get_v4l2_edid32(struct v4l2_edid __user *p64,
> {
> compat_uptr_t tmp;
>
> - if (!access_ok(VERIFY_READ, p32, sizeof(*p32)) ||
> + if (!access_ok(p32, sizeof(*p32)) ||
> assign_in_user(&p64->pad, &p32->pad) ||
> assign_in_user(&p64->start_block, &p32->start_block) ||
> assign_in_user_cast(&p64->blocks, &p32->blocks) ||
> @@ -1085,7 +1085,7 @@ static int put_v4l2_edid32(struct v4l2_edid __user *p64,
> {
> void *edid;
>
> - if (!access_ok(VERIFY_WRITE, p32, sizeof(*p32)) ||
> + if (!access_ok(p32, sizeof(*p32)) ||
> assign_in_user(&p32->pad, &p64->pad) ||
> assign_in_user(&p32->start_block, &p64->start_block) ||
> assign_in_user(&p32->blocks, &p64->blocks) ||
> diff --git a/drivers/misc/vmw_vmci/vmci_host.c b/drivers/misc/vmw_vmci/vmci_host.c
> index 5da1f3e3f997..997f92543dd4 100644
> --- a/drivers/misc/vmw_vmci/vmci_host.c
> +++ b/drivers/misc/vmw_vmci/vmci_host.c
> @@ -236,7 +236,7 @@ static int vmci_host_setup_notify(struct vmci_ctx *context,
> * about the size.
> */
> BUILD_BUG_ON(sizeof(bool) != sizeof(u8));
> - if (!access_ok(VERIFY_WRITE, (void __user *)uva, sizeof(u8)))
> + if (!access_ok((void __user *)uva, sizeof(u8)))
> return VMCI_ERROR_GENERIC;
>
> /*
> diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c
> index 7ac035af39f0..6fa1627ce08d 100644
> --- a/drivers/pci/proc.c
> +++ b/drivers/pci/proc.c
> @@ -52,7 +52,7 @@ static ssize_t proc_bus_pci_read(struct file *file, char __user *buf,
> nbytes = size - pos;
> cnt = nbytes;
>
> - if (!access_ok(VERIFY_WRITE, buf, cnt))
> + if (!access_ok(buf, cnt))
> return -EINVAL;
>
> pci_config_pm_runtime_get(dev);
> @@ -125,7 +125,7 @@ static ssize_t proc_bus_pci_write(struct file *file, const char __user *buf,
> nbytes = size - pos;
> cnt = nbytes;
>
> - if (!access_ok(VERIFY_READ, buf, cnt))
> + if (!access_ok(buf, cnt))
> return -EINVAL;
>
> pci_config_pm_runtime_get(dev);
> diff --git a/drivers/platform/goldfish/goldfish_pipe.c b/drivers/platform/goldfish/goldfish_pipe.c
> index 7c639006252e..321bc673c417 100644
> --- a/drivers/platform/goldfish/goldfish_pipe.c
> +++ b/drivers/platform/goldfish/goldfish_pipe.c
> @@ -416,8 +416,7 @@ static ssize_t goldfish_pipe_read_write(struct file *filp,
> if (unlikely(bufflen == 0))
> return 0;
> /* Check the buffer range for access */
> - if (unlikely(!access_ok(is_write ? VERIFY_WRITE : VERIFY_READ,
> - buffer, bufflen)))
> + if (unlikely(!access_ok(buffer, bufflen)))
> return -EFAULT;
>
> address = (unsigned long)buffer;
> diff --git a/drivers/pnp/isapnp/proc.c b/drivers/pnp/isapnp/proc.c
> index 262285e48a09..051613140812 100644
> --- a/drivers/pnp/isapnp/proc.c
> +++ b/drivers/pnp/isapnp/proc.c
> @@ -47,7 +47,7 @@ static ssize_t isapnp_proc_bus_read(struct file *file, char __user * buf,
> nbytes = size - pos;
> cnt = nbytes;
>
> - if (!access_ok(VERIFY_WRITE, buf, cnt))
> + if (!access_ok(buf, cnt))
> return -EINVAL;
>
> isapnp_cfg_begin(dev->card->number, dev->number);
> diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c
> index 7c4673308f5b..e338d7a4f571 100644
> --- a/drivers/scsi/pmcraid.c
> +++ b/drivers/scsi/pmcraid.c
> @@ -3600,7 +3600,7 @@ static long pmcraid_ioctl_passthrough(
> u32 ioasc;
> int request_size;
> int buffer_size;
> - u8 access, direction;
> + u8 direction;
> int rc = 0;
>
> /* If IOA reset is in progress, wait 10 secs for reset to complete */
> @@ -3649,10 +3649,8 @@ static long pmcraid_ioctl_passthrough(
> request_size = le32_to_cpu(buffer->ioarcb.data_transfer_length);
>
> if (buffer->ioarcb.request_flags0 & TRANSFER_DIR_WRITE) {
> - access = VERIFY_READ;
> direction = DMA_TO_DEVICE;
> } else {
> - access = VERIFY_WRITE;
> direction = DMA_FROM_DEVICE;
> }
>
> diff --git a/drivers/scsi/scsi_ioctl.c b/drivers/scsi/scsi_ioctl.c
> index cc30fccc1a2e..840d96fe81bc 100644
> --- a/drivers/scsi/scsi_ioctl.c
> +++ b/drivers/scsi/scsi_ioctl.c
> @@ -221,7 +221,7 @@ int scsi_ioctl(struct scsi_device *sdev, int cmd, void __user *arg)
>
> switch (cmd) {
> case SCSI_IOCTL_GET_IDLUN:
> - if (!access_ok(VERIFY_WRITE, arg, sizeof(struct scsi_idlun)))
> + if (!access_ok(arg, sizeof(struct scsi_idlun)))
> return -EFAULT;
>
> __put_user((sdev->id & 0xff)
> diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
> index 4e27460ec926..d3f15319b9b3 100644
> --- a/drivers/scsi/sg.c
> +++ b/drivers/scsi/sg.c
> @@ -434,7 +434,7 @@ sg_read(struct file *filp, char __user *buf, size_t count, loff_t * ppos)
> SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp,
> "sg_read: count=%d\n", (int) count));
>
> - if (!access_ok(VERIFY_WRITE, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT;
> if (sfp->force_packid && (count >= SZ_SG_HEADER)) {
> old_hdr = kmalloc(SZ_SG_HEADER, GFP_KERNEL);
> @@ -632,7 +632,7 @@ sg_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos)
> scsi_block_when_processing_errors(sdp->device)))
> return -ENXIO;
>
> - if (!access_ok(VERIFY_READ, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT; /* protects following copy_from_user()s + get_user()s */
> if (count < SZ_SG_HEADER)
> return -EIO;
> @@ -729,7 +729,7 @@ sg_new_write(Sg_fd *sfp, struct file *file, const char __user *buf,
>
> if (count < SZ_SG_IO_HDR)
> return -EINVAL;
> - if (!access_ok(VERIFY_READ, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT; /* protects following copy_from_user()s + get_user()s */
>
> sfp->cmd_q = 1; /* when sg_io_hdr seen, set command queuing on */
> @@ -768,7 +768,7 @@ sg_new_write(Sg_fd *sfp, struct file *file, const char __user *buf,
> sg_remove_request(sfp, srp);
> return -EMSGSIZE;
> }
> - if (!access_ok(VERIFY_READ, hp->cmdp, hp->cmd_len)) {
> + if (!access_ok(hp->cmdp, hp->cmd_len)) {
> sg_remove_request(sfp, srp);
> return -EFAULT; /* protects following copy_from_user()s + get_user()s */
> }
> @@ -922,7 +922,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
> return -ENODEV;
> if (!scsi_block_when_processing_errors(sdp->device))
> return -ENXIO;
> - if (!access_ok(VERIFY_WRITE, p, SZ_SG_IO_HDR))
> + if (!access_ok(p, SZ_SG_IO_HDR))
> return -EFAULT;
> result = sg_new_write(sfp, filp, p, SZ_SG_IO_HDR,
> 1, read_only, 1, &srp);
> @@ -968,7 +968,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
> case SG_GET_LOW_DMA:
> return put_user((int) sdp->device->host->unchecked_isa_dma, ip);
> case SG_GET_SCSI_ID:
> - if (!access_ok(VERIFY_WRITE, p, sizeof (sg_scsi_id_t)))
> + if (!access_ok(p, sizeof (sg_scsi_id_t)))
> return -EFAULT;
> else {
> sg_scsi_id_t __user *sg_idp = p;
> @@ -997,7 +997,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
> sfp->force_packid = val ? 1 : 0;
> return 0;
> case SG_GET_PACK_ID:
> - if (!access_ok(VERIFY_WRITE, ip, sizeof (int)))
> + if (!access_ok(ip, sizeof (int)))
> return -EFAULT;
> read_lock_irqsave(&sfp->rq_list_lock, iflags);
> list_for_each_entry(srp, &sfp->rq_list, entry) {
> @@ -1078,7 +1078,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
> val = (sdp->device ? 1 : 0);
> return put_user(val, ip);
> case SG_GET_REQUEST_TABLE:
> - if (!access_ok(VERIFY_WRITE, p, SZ_SG_REQ_INFO * SG_MAX_QUEUE))
> + if (!access_ok(p, SZ_SG_REQ_INFO * SG_MAX_QUEUE))
> return -EFAULT;
> else {
> sg_req_info_t *rinfo;
> diff --git a/drivers/staging/comedi/comedi_compat32.c b/drivers/staging/comedi/comedi_compat32.c
> index fa9d239474ee..36a3564ba1fb 100644
> --- a/drivers/staging/comedi/comedi_compat32.c
> +++ b/drivers/staging/comedi/comedi_compat32.c
> @@ -102,8 +102,8 @@ static int compat_chaninfo(struct file *file, unsigned long arg)
> chaninfo = compat_alloc_user_space(sizeof(*chaninfo));
>
> /* Copy chaninfo structure. Ignore unused members. */
> - if (!access_ok(VERIFY_READ, chaninfo32, sizeof(*chaninfo32)) ||
> - !access_ok(VERIFY_WRITE, chaninfo, sizeof(*chaninfo)))
> + if (!access_ok(chaninfo32, sizeof(*chaninfo32)) ||
> + !access_ok(chaninfo, sizeof(*chaninfo)))
> return -EFAULT;
>
> err = 0;
> @@ -136,8 +136,8 @@ static int compat_rangeinfo(struct file *file, unsigned long arg)
> rangeinfo = compat_alloc_user_space(sizeof(*rangeinfo));
>
> /* Copy rangeinfo structure. */
> - if (!access_ok(VERIFY_READ, rangeinfo32, sizeof(*rangeinfo32)) ||
> - !access_ok(VERIFY_WRITE, rangeinfo, sizeof(*rangeinfo)))
> + if (!access_ok(rangeinfo32, sizeof(*rangeinfo32)) ||
> + !access_ok(rangeinfo, sizeof(*rangeinfo)))
> return -EFAULT;
>
> err = 0;
> @@ -163,8 +163,8 @@ static int get_compat_cmd(struct comedi_cmd __user *cmd,
> } temp;
>
> /* Copy cmd structure. */
> - if (!access_ok(VERIFY_READ, cmd32, sizeof(*cmd32)) ||
> - !access_ok(VERIFY_WRITE, cmd, sizeof(*cmd)))
> + if (!access_ok(cmd32, sizeof(*cmd32)) ||
> + !access_ok(cmd, sizeof(*cmd)))
> return -EFAULT;
>
> err = 0;
> @@ -217,8 +217,8 @@ static int put_compat_cmd(struct comedi32_cmd_struct __user *cmd32,
> * Assume the pointer values are already valid.
> * (Could use ptr_to_compat() to set them.)
> */
> - if (!access_ok(VERIFY_READ, cmd, sizeof(*cmd)) ||
> - !access_ok(VERIFY_WRITE, cmd32, sizeof(*cmd32)))
> + if (!access_ok(cmd, sizeof(*cmd)) ||
> + !access_ok(cmd32, sizeof(*cmd32)))
> return -EFAULT;
>
> err = 0;
> @@ -317,8 +317,8 @@ static int get_compat_insn(struct comedi_insn __user *insn,
>
> /* Copy insn structure. Ignore the unused members. */
> err = 0;
> - if (!access_ok(VERIFY_READ, insn32, sizeof(*insn32)) ||
> - !access_ok(VERIFY_WRITE, insn, sizeof(*insn)))
> + if (!access_ok(insn32, sizeof(*insn32)) ||
> + !access_ok(insn, sizeof(*insn)))
> return -EFAULT;
>
> err |= __get_user(temp.uint, &insn32->insn);
> @@ -350,7 +350,7 @@ static int compat_insnlist(struct file *file, unsigned long arg)
> insnlist32 = compat_ptr(arg);
>
> /* Get 32-bit insnlist structure. */
> - if (!access_ok(VERIFY_READ, insnlist32, sizeof(*insnlist32)))
> + if (!access_ok(insnlist32, sizeof(*insnlist32)))
> return -EFAULT;
>
> err = 0;
> @@ -365,7 +365,7 @@ static int compat_insnlist(struct file *file, unsigned long arg)
> insn[n_insns]));
>
> /* Set native insnlist structure. */
> - if (!access_ok(VERIFY_WRITE, &s->insnlist, sizeof(s->insnlist)))
> + if (!access_ok(&s->insnlist, sizeof(s->insnlist)))
> return -EFAULT;
>
> err |= __put_user(n_insns, &s->insnlist.n_insns);
> diff --git a/drivers/tty/n_hdlc.c b/drivers/tty/n_hdlc.c
> index 99460af61b77..4164414d4c64 100644
> --- a/drivers/tty/n_hdlc.c
> +++ b/drivers/tty/n_hdlc.c
> @@ -573,7 +573,7 @@ static ssize_t n_hdlc_tty_read(struct tty_struct *tty, struct file *file,
> return -EIO;
>
> /* verify user access to buffer */
> - if (!access_ok(VERIFY_WRITE, buf, nr)) {
> + if (!access_ok(buf, nr)) {
> printk(KERN_WARNING "%s(%d) n_hdlc_tty_read() can't verify user "
> "buffer\n", __FILE__, __LINE__);
> return -EFAULT;
> diff --git a/drivers/usb/core/devices.c b/drivers/usb/core/devices.c
> index 3de3c750b5f6..44f28a114c2b 100644
> --- a/drivers/usb/core/devices.c
> +++ b/drivers/usb/core/devices.c
> @@ -598,7 +598,7 @@ static ssize_t usb_device_read(struct file *file, char __user *buf,
> return -EINVAL;
> if (nbytes <= 0)
> return 0;
> - if (!access_ok(VERIFY_WRITE, buf, nbytes))
> + if (!access_ok(buf, nbytes))
> return -EFAULT;
>
> mutex_lock(&usb_bus_idr_lock);
> diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
> index a75bc0b8a50f..d65566341dd1 100644
> --- a/drivers/usb/core/devio.c
> +++ b/drivers/usb/core/devio.c
> @@ -1094,7 +1094,7 @@ static int proc_control(struct usb_dev_state *ps, void __user *arg)
> ctrl.bRequestType, ctrl.bRequest, ctrl.wValue,
> ctrl.wIndex, ctrl.wLength);
> if (ctrl.bRequestType & 0x80) {
> - if (ctrl.wLength && !access_ok(VERIFY_WRITE, ctrl.data,
> + if (ctrl.wLength && !access_ok(ctrl.data,
> ctrl.wLength)) {
> ret = -EINVAL;
> goto done;
> @@ -1183,7 +1183,7 @@ static int proc_bulk(struct usb_dev_state *ps, void __user *arg)
> }
> tmo = bulk.timeout;
> if (bulk.ep & 0x80) {
> - if (len1 && !access_ok(VERIFY_WRITE, bulk.data, len1)) {
> + if (len1 && !access_ok(bulk.data, len1)) {
> ret = -EINVAL;
> goto done;
> }
> @@ -1584,8 +1584,7 @@ static int proc_do_submiturb(struct usb_dev_state *ps, struct usbdevfs_urb *uurb
> }
>
> if (uurb->buffer_length > 0 &&
> - !access_ok(is_in ? VERIFY_WRITE : VERIFY_READ,
> - uurb->buffer, uurb->buffer_length)) {
> + !access_ok(uurb->buffer, uurb->buffer_length)) {
> ret = -EFAULT;
> goto error;
> }
> diff --git a/drivers/usb/gadget/function/f_hid.c b/drivers/usb/gadget/function/f_hid.c
> index 54e859dcb25c..75b113a5b25c 100644
> --- a/drivers/usb/gadget/function/f_hid.c
> +++ b/drivers/usb/gadget/function/f_hid.c
> @@ -252,7 +252,7 @@ static ssize_t f_hidg_read(struct file *file, char __user *buffer,
> if (!count)
> return 0;
>
> - if (!access_ok(VERIFY_WRITE, buffer, count))
> + if (!access_ok(buffer, count))
> return -EFAULT;
>
> spin_lock_irqsave(&hidg->read_spinlock, flags);
> @@ -339,7 +339,7 @@ static ssize_t f_hidg_write(struct file *file, const char __user *buffer,
> unsigned long flags;
> ssize_t status = -ENOMEM;
>
> - if (!access_ok(VERIFY_READ, buffer, count))
> + if (!access_ok(buffer, count))
> return -EFAULT;
>
> spin_lock_irqsave(&hidg->write_spinlock, flags);
> diff --git a/drivers/usb/gadget/udc/atmel_usba_udc.c b/drivers/usb/gadget/udc/atmel_usba_udc.c
> index 11247322d587..660712e0bf98 100644
> --- a/drivers/usb/gadget/udc/atmel_usba_udc.c
> +++ b/drivers/usb/gadget/udc/atmel_usba_udc.c
> @@ -88,7 +88,7 @@ static ssize_t queue_dbg_read(struct file *file, char __user *buf,
> size_t len, remaining, actual = 0;
> char tmpbuf[38];
>
> - if (!access_ok(VERIFY_WRITE, buf, nbytes))
> + if (!access_ok(buf, nbytes))
> return -EFAULT;
>
> inode_lock(file_inode(file));
> diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
> index 55e5aa662ad5..9f7942cbcbb2 100644
> --- a/drivers/vhost/vhost.c
> +++ b/drivers/vhost/vhost.c
> @@ -655,7 +655,7 @@ static bool log_access_ok(void __user *log_base, u64 addr, unsigned long sz)
> a + (unsigned long)log_base > ULONG_MAX)
> return false;
>
> - return access_ok(VERIFY_WRITE, log_base + a,
> + return access_ok(log_base + a,
> (sz + VHOST_PAGE_SIZE * 8 - 1) / VHOST_PAGE_SIZE / 8);
> }
>
> @@ -681,7 +681,7 @@ static bool vq_memory_access_ok(void __user *log_base, struct vhost_umem *umem,
> return false;
>
>
> - if (!access_ok(VERIFY_WRITE, (void __user *)a,
> + if (!access_ok((void __user *)a,
> node->size))
> return false;
> else if (log_all && !log_access_ok(log_base,
> @@ -973,10 +973,10 @@ static bool umem_access_ok(u64 uaddr, u64 size, int access)
> return false;
>
> if ((access & VHOST_ACCESS_RO) &&
> - !access_ok(VERIFY_READ, (void __user *)a, size))
> + !access_ok((void __user *)a, size))
> return false;
> if ((access & VHOST_ACCESS_WO) &&
> - !access_ok(VERIFY_WRITE, (void __user *)a, size))
> + !access_ok((void __user *)a, size))
> return false;
> return true;
> }
> @@ -1185,10 +1185,10 @@ static bool vq_access_ok(struct vhost_virtqueue *vq, unsigned int num,
> {
> size_t s = vhost_has_feature(vq, VIRTIO_RING_F_EVENT_IDX) ? 2 : 0;
>
> - return access_ok(VERIFY_READ, desc, num * sizeof *desc) &&
> - access_ok(VERIFY_READ, avail,
> + return access_ok(desc, num * sizeof *desc) &&
> + access_ok(avail,
> sizeof *avail + num * sizeof *avail->ring + s) &&
> - access_ok(VERIFY_WRITE, used,
> + access_ok(used,
> sizeof *used + num * sizeof *used->ring + s);
> }
>
> @@ -1814,7 +1814,7 @@ int vhost_vq_init_access(struct vhost_virtqueue *vq)
> goto err;
> vq->signalled_used_valid = false;
> if (!vq->iotlb &&
> - !access_ok(VERIFY_READ, &vq->used->idx, sizeof vq->used->idx)) {
> + !access_ok(&vq->used->idx, sizeof vq->used->idx)) {
> r = -EFAULT;
> goto err;
> }
> diff --git a/drivers/video/fbdev/amifb.c b/drivers/video/fbdev/amifb.c
> index 0777aff211e5..758457026694 100644
> --- a/drivers/video/fbdev/amifb.c
> +++ b/drivers/video/fbdev/amifb.c
> @@ -1855,7 +1855,7 @@ static int ami_get_var_cursorinfo(struct fb_var_cursorinfo *var,
> var->yspot = par->crsr.spot_y;
> if (size > var->height * var->width)
> return -ENAMETOOLONG;
> - if (!access_ok(VERIFY_WRITE, data, size))
> + if (!access_ok(data, size))
> return -EFAULT;
> delta = 1 << par->crsr.fmode;
> lspr = lofsprite + (delta << 1);
> @@ -1935,7 +1935,7 @@ static int ami_set_var_cursorinfo(struct fb_var_cursorinfo *var,
> return -EINVAL;
> if (!var->height)
> return -EINVAL;
> - if (!access_ok(VERIFY_READ, data, var->width * var->height))
> + if (!access_ok(data, var->width * var->height))
> return -EFAULT;
> delta = 1 << fmode;
> lofsprite = shfsprite = (u_short *)spritememory;
> diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c b/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c
> index a3edb20ea4c3..53f93616c671 100644
> --- a/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c
> +++ b/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c
> @@ -493,7 +493,7 @@ static int omapfb_memory_read(struct fb_info *fbi,
> if (!display || !display->driver->memory_read)
> return -ENOENT;
>
> - if (!access_ok(VERIFY_WRITE, mr->buffer, mr->buffer_size))
> + if (!access_ok(mr->buffer, mr->buffer_size))
> return -EFAULT;
>
> if (mr->w > 4096 || mr->h > 4096)
> diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c
> index 7e6e682104dc..b24ddac1604b 100644
> --- a/drivers/xen/privcmd.c
> +++ b/drivers/xen/privcmd.c
> @@ -459,14 +459,14 @@ static long privcmd_ioctl_mmap_batch(
> return -EFAULT;
> /* Returns per-frame error in m.arr. */
> m.err = NULL;
> - if (!access_ok(VERIFY_WRITE, m.arr, m.num * sizeof(*m.arr)))
> + if (!access_ok(m.arr, m.num * sizeof(*m.arr)))
> return -EFAULT;
> break;
> case 2:
> if (copy_from_user(&m, udata, sizeof(struct privcmd_mmapbatch_v2)))
> return -EFAULT;
> /* Returns per-frame error code in m.err. */
> - if (!access_ok(VERIFY_WRITE, m.err, m.num * (sizeof(*m.err))))
> + if (!access_ok(m.err, m.num * (sizeof(*m.err))))
> return -EFAULT;
> break;
> default:
> @@ -661,7 +661,7 @@ static long privcmd_ioctl_dm_op(struct file *file, void __user *udata)
> goto out;
> }
>
> - if (!access_ok(VERIFY_WRITE, kbufs[i].uptr,
> + if (!access_ok(kbufs[i].uptr,
> kbufs[i].size)) {
> rc = -EFAULT;
> goto out;
> diff --git a/fs/binfmt_aout.c b/fs/binfmt_aout.c
> index c3deb2e35f20..ca9725f18e00 100644
> --- a/fs/binfmt_aout.c
> +++ b/fs/binfmt_aout.c
> @@ -78,9 +78,9 @@ static int aout_core_dump(struct coredump_params *cprm)
>
> /* make sure we actually have a data and stack area to dump */
> set_fs(USER_DS);
> - if (!access_ok(VERIFY_READ, START_DATA(dump), dump.u_dsize << PAGE_SHIFT))
> + if (!access_ok(START_DATA(dump), dump.u_dsize << PAGE_SHIFT))
> dump.u_dsize = 0;
> - if (!access_ok(VERIFY_READ, START_STACK(dump), dump.u_ssize << PAGE_SHIFT))
> + if (!access_ok(START_STACK(dump), dump.u_ssize << PAGE_SHIFT))
> dump.u_ssize = 0;
>
> set_fs(KERNEL_DS);
> diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
> index 1b15b43905f8..7ea2d6b1f170 100644
> --- a/fs/btrfs/send.c
> +++ b/fs/btrfs/send.c
> @@ -6646,7 +6646,7 @@ long btrfs_ioctl_send(struct file *mnt_file, struct btrfs_ioctl_send_args *arg)
> goto out;
> }
>
> - if (!access_ok(VERIFY_READ, arg->clone_sources,
> + if (!access_ok(arg->clone_sources,
> sizeof(*arg->clone_sources) *
> arg->clone_sources_count)) {
> ret = -EFAULT;
> diff --git a/fs/eventpoll.c b/fs/eventpoll.c
> index 8a5a1010886b..7ebae39fbcb3 100644
> --- a/fs/eventpoll.c
> +++ b/fs/eventpoll.c
> @@ -2172,7 +2172,7 @@ static int do_epoll_wait(int epfd, struct epoll_event __user *events,
> return -EINVAL;
>
> /* Verify that the area passed by the user is writeable */
> - if (!access_ok(VERIFY_WRITE, events, maxevents * sizeof(struct epoll_event)))
> + if (!access_ok(events, maxevents * sizeof(struct epoll_event)))
> return -EFAULT;
>
> /* Get the "struct file *" for the eventpoll file */
> diff --git a/fs/fat/dir.c b/fs/fat/dir.c
> index c8366cb8eccd..0295a095b920 100644
> --- a/fs/fat/dir.c
> +++ b/fs/fat/dir.c
> @@ -805,7 +805,7 @@ static long fat_dir_ioctl(struct file *filp, unsigned int cmd,
> return fat_generic_ioctl(filp, cmd, arg);
> }
>
> - if (!access_ok(VERIFY_WRITE, d1, sizeof(struct __fat_dirent[2])))
> + if (!access_ok(d1, sizeof(struct __fat_dirent[2])))
> return -EFAULT;
> /*
> * Yes, we don't need this put_user() absolutely. However old
> @@ -845,7 +845,7 @@ static long fat_compat_dir_ioctl(struct file *filp, unsigned cmd,
> return fat_generic_ioctl(filp, cmd, (unsigned long)arg);
> }
>
> - if (!access_ok(VERIFY_WRITE, d1, sizeof(struct compat_dirent[2])))
> + if (!access_ok(d1, sizeof(struct compat_dirent[2])))
> return -EFAULT;
> /*
> * Yes, we don't need this put_user() absolutely. However old
> diff --git a/fs/ioctl.c b/fs/ioctl.c
> index d64f622cac8b..fef3a6bf7c78 100644
> --- a/fs/ioctl.c
> +++ b/fs/ioctl.c
> @@ -203,7 +203,7 @@ static int ioctl_fiemap(struct file *filp, unsigned long arg)
> fieinfo.fi_extents_start = ufiemap->fm_extents;
>
> if (fiemap.fm_extent_count != 0 &&
> - !access_ok(VERIFY_WRITE, fieinfo.fi_extents_start,
> + !access_ok(fieinfo.fi_extents_start,
> fieinfo.fi_extents_max * sizeof(struct fiemap_extent)))
> return -EFAULT;
>
> diff --git a/fs/namespace.c b/fs/namespace.c
> index a7f91265ea67..97b7c7098c3d 100644
> --- a/fs/namespace.c
> +++ b/fs/namespace.c
> @@ -2651,7 +2651,7 @@ static long exact_copy_from_user(void *to, const void __user * from,
> const char __user *f = from;
> char c;
>
> - if (!access_ok(VERIFY_READ, from, n))
> + if (!access_ok(from, n))
> return n;
>
> current->kernel_uaccess_faults_ok++;
> diff --git a/fs/ocfs2/dlmfs/dlmfs.c b/fs/ocfs2/dlmfs/dlmfs.c
> index b8fa1487cd85..8decbe95dcec 100644
> --- a/fs/ocfs2/dlmfs/dlmfs.c
> +++ b/fs/ocfs2/dlmfs/dlmfs.c
> @@ -254,7 +254,7 @@ static ssize_t dlmfs_file_read(struct file *filp,
> if (!count)
> return 0;
>
> - if (!access_ok(VERIFY_WRITE, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT;
>
> /* don't read past the lvb */
> @@ -302,7 +302,7 @@ static ssize_t dlmfs_file_write(struct file *filp,
> if (!count)
> return 0;
>
> - if (!access_ok(VERIFY_READ, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT;
>
> /* don't write past the lvb */
> diff --git a/fs/pstore/pmsg.c b/fs/pstore/pmsg.c
> index 24db02de1787..97fcef74e5af 100644
> --- a/fs/pstore/pmsg.c
> +++ b/fs/pstore/pmsg.c
> @@ -33,7 +33,7 @@ static ssize_t write_pmsg(struct file *file, const char __user *buf,
> record.size = count;
>
> /* check outside lock, page in any data. write_user also checks */
> - if (!access_ok(VERIFY_READ, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT;
>
> mutex_lock(&pmsg_lock);
> diff --git a/fs/pstore/ram_core.c b/fs/pstore/ram_core.c
> index c11711c2cc83..f375c0735351 100644
> --- a/fs/pstore/ram_core.c
> +++ b/fs/pstore/ram_core.c
> @@ -357,7 +357,7 @@ int notrace persistent_ram_write_user(struct persistent_ram_zone *prz,
> int rem, ret = 0, c = count;
> size_t start;
>
> - if (unlikely(!access_ok(VERIFY_READ, s, count)))
> + if (unlikely(!access_ok(s, count)))
> return -EFAULT;
> if (unlikely(c > prz->buffer_size)) {
> s += c - prz->buffer_size;
> diff --git a/fs/read_write.c b/fs/read_write.c
> index 58f30537c47a..ff3c5e6f87cf 100644
> --- a/fs/read_write.c
> +++ b/fs/read_write.c
> @@ -442,7 +442,7 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
> return -EBADF;
> if (!(file->f_mode & FMODE_CAN_READ))
> return -EINVAL;
> - if (unlikely(!access_ok(VERIFY_WRITE, buf, count)))
> + if (unlikely(!access_ok(buf, count)))
> return -EFAULT;
>
> ret = rw_verify_area(READ, file, pos, count);
> @@ -538,7 +538,7 @@ ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_
> return -EBADF;
> if (!(file->f_mode & FMODE_CAN_WRITE))
> return -EINVAL;
> - if (unlikely(!access_ok(VERIFY_READ, buf, count)))
> + if (unlikely(!access_ok(buf, count)))
> return -EFAULT;
>
> ret = rw_verify_area(WRITE, file, pos, count);
> @@ -718,9 +718,6 @@ static ssize_t do_loop_readv_writev(struct file *filp, struct iov_iter *iter,
> return ret;
> }
>
> -/* A write operation does a read from user space and vice versa */
> -#define vrfy_dir(type) ((type) == READ ? VERIFY_WRITE : VERIFY_READ)
> -
> /**
> * rw_copy_check_uvector() - Copy an array of &struct iovec from userspace
> * into the kernel and check that it is valid.
> @@ -810,7 +807,7 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector,
> goto out;
> }
> if (type >= 0
> - && unlikely(!access_ok(vrfy_dir(type), buf, len))) {
> + && unlikely(!access_ok(buf, len))) {
> ret = -EFAULT;
> goto out;
> }
> @@ -856,7 +853,7 @@ ssize_t compat_rw_copy_check_uvector(int type,
> *ret_pointer = iov;
>
> ret = -EFAULT;
> - if (!access_ok(VERIFY_READ, uvector, nr_segs*sizeof(*uvector)))
> + if (!access_ok(uvector, nr_segs*sizeof(*uvector)))
> goto out;
>
> /*
> @@ -881,7 +878,7 @@ ssize_t compat_rw_copy_check_uvector(int type,
> if (len < 0) /* size_t not fitting in compat_ssize_t .. */
> goto out;
> if (type >= 0 &&
> - !access_ok(vrfy_dir(type), compat_ptr(buf), len)) {
> + !access_ok(compat_ptr(buf), len)) {
> ret = -EFAULT;
> goto out;
> }
> diff --git a/fs/readdir.c b/fs/readdir.c
> index d97f548e6323..2f6a4534e0df 100644
> --- a/fs/readdir.c
> +++ b/fs/readdir.c
> @@ -105,7 +105,7 @@ static int fillonedir(struct dir_context *ctx, const char *name, int namlen,
> }
> buf->result++;
> dirent = buf->dirent;
> - if (!access_ok(VERIFY_WRITE, dirent,
> + if (!access_ok(dirent,
> (unsigned long)(dirent->d_name + namlen + 1) -
> (unsigned long)dirent))
> goto efault;
> @@ -221,7 +221,7 @@ SYSCALL_DEFINE3(getdents, unsigned int, fd,
> };
> int error;
>
> - if (!access_ok(VERIFY_WRITE, dirent, count))
> + if (!access_ok(dirent, count))
> return -EFAULT;
>
> f = fdget_pos(fd);
> @@ -304,7 +304,7 @@ int ksys_getdents64(unsigned int fd, struct linux_dirent64 __user *dirent,
> };
> int error;
>
> - if (!access_ok(VERIFY_WRITE, dirent, count))
> + if (!access_ok(dirent, count))
> return -EFAULT;
>
> f = fdget_pos(fd);
> @@ -365,7 +365,7 @@ static int compat_fillonedir(struct dir_context *ctx, const char *name,
> }
> buf->result++;
> dirent = buf->dirent;
> - if (!access_ok(VERIFY_WRITE, dirent,
> + if (!access_ok(dirent,
> (unsigned long)(dirent->d_name + namlen + 1) -
> (unsigned long)dirent))
> goto efault;
> @@ -475,7 +475,7 @@ COMPAT_SYSCALL_DEFINE3(getdents, unsigned int, fd,
> };
> int error;
>
> - if (!access_ok(VERIFY_WRITE, dirent, count))
> + if (!access_ok(dirent, count))
> return -EFAULT;
>
> f = fdget_pos(fd);
> diff --git a/fs/select.c b/fs/select.c
> index 4c8652390c94..d0f35dbc0e8f 100644
> --- a/fs/select.c
> +++ b/fs/select.c
> @@ -381,9 +381,6 @@ typedef struct {
> #define FDS_BYTES(nr) (FDS_LONGS(nr)*sizeof(long))
>
> /*
> - * We do a VERIFY_WRITE here even though we are only reading this time:
> - * we'll write to it eventually..
> - *
> * Use "unsigned long" accesses to let user-mode fd_set's be long-aligned.
> */
> static inline
> @@ -782,7 +779,7 @@ SYSCALL_DEFINE6(pselect6, int, n, fd_set __user *, inp, fd_set __user *, outp,
> sigset_t __user *up = NULL;
>
> if (sig) {
> - if (!access_ok(VERIFY_READ, sig, sizeof(void *)+sizeof(size_t))
> + if (!access_ok(sig, sizeof(void *)+sizeof(size_t))
> || __get_user(up, (sigset_t __user * __user *)sig)
> || __get_user(sigsetsize,
> (size_t __user *)(sig+sizeof(void *))))
> @@ -802,7 +799,7 @@ SYSCALL_DEFINE6(pselect6_time32, int, n, fd_set __user *, inp, fd_set __user *,
> sigset_t __user *up = NULL;
>
> if (sig) {
> - if (!access_ok(VERIFY_READ, sig, sizeof(void *)+sizeof(size_t))
> + if (!access_ok(sig, sizeof(void *)+sizeof(size_t))
> || __get_user(up, (sigset_t __user * __user *)sig)
> || __get_user(sigsetsize,
> (size_t __user *)(sig+sizeof(void *))))
> @@ -1368,7 +1365,7 @@ COMPAT_SYSCALL_DEFINE6(pselect6_time64, int, n, compat_ulong_t __user *, inp,
> compat_uptr_t up = 0;
>
> if (sig) {
> - if (!access_ok(VERIFY_READ, sig,
> + if (!access_ok(sig,
> sizeof(compat_uptr_t)+sizeof(compat_size_t)) ||
> __get_user(up, (compat_uptr_t __user *)sig) ||
> __get_user(sigsetsize,
> @@ -1390,7 +1387,7 @@ COMPAT_SYSCALL_DEFINE6(pselect6, int, n, compat_ulong_t __user *, inp,
> compat_uptr_t up = 0;
>
> if (sig) {
> - if (!access_ok(VERIFY_READ, sig,
> + if (!access_ok(sig,
> sizeof(compat_uptr_t)+sizeof(compat_size_t)) ||
> __get_user(up, (compat_uptr_t __user *)sig) ||
> __get_user(sigsetsize,
> diff --git a/include/asm-generic/uaccess.h b/include/asm-generic/uaccess.h
> index 6b2e63df2739..d82c78a79da5 100644
> --- a/include/asm-generic/uaccess.h
> +++ b/include/asm-generic/uaccess.h
> @@ -35,7 +35,7 @@ static inline void set_fs(mm_segment_t fs)
> #define segment_eq(a, b) ((a).seg == (b).seg)
> #endif
>
> -#define access_ok(type, addr, size) __access_ok((unsigned long)(addr),(size))
> +#define access_ok(addr, size) __access_ok((unsigned long)(addr),(size))
>
> /*
> * The architecture should really override this if possible, at least
> @@ -78,7 +78,7 @@ static inline int __access_ok(unsigned long addr, unsigned long size)
> ({ \
> void __user *__p = (ptr); \
> might_fault(); \
> - access_ok(VERIFY_WRITE, __p, sizeof(*ptr)) ? \
> + access_ok(__p, sizeof(*ptr)) ? \
> __put_user((x), ((__typeof__(*(ptr)) __user *)__p)) : \
> -EFAULT; \
> })
> @@ -140,7 +140,7 @@ extern int __put_user_bad(void) __attribute__((noreturn));
> ({ \
> const void __user *__p = (ptr); \
> might_fault(); \
> - access_ok(VERIFY_READ, __p, sizeof(*ptr)) ? \
> + access_ok(__p, sizeof(*ptr)) ? \
> __get_user((x), (__typeof__(*(ptr)) __user *)__p) :\
> ((x) = (__typeof__(*(ptr)))0,-EFAULT); \
> })
> @@ -175,7 +175,7 @@ __strncpy_from_user(char *dst, const char __user *src, long count)
> static inline long
> strncpy_from_user(char *dst, const char __user *src, long count)
> {
> - if (!access_ok(VERIFY_READ, src, 1))
> + if (!access_ok(src, 1))
> return -EFAULT;
> return __strncpy_from_user(dst, src, count);
> }
> @@ -196,7 +196,7 @@ strncpy_from_user(char *dst, const char __user *src, long count)
> */
> static inline long strnlen_user(const char __user *src, long n)
> {
> - if (!access_ok(VERIFY_READ, src, 1))
> + if (!access_ok(src, 1))
> return 0;
> return __strnlen_user(src, n);
> }
> @@ -217,7 +217,7 @@ static inline __must_check unsigned long
> clear_user(void __user *to, unsigned long n)
> {
> might_fault();
> - if (!access_ok(VERIFY_WRITE, to, n))
> + if (!access_ok(to, n))
> return n;
>
> return __clear_user(to, n);
> diff --git a/include/linux/regset.h b/include/linux/regset.h
> index 494cedaafdf2..a85c1707285c 100644
> --- a/include/linux/regset.h
> +++ b/include/linux/regset.h
> @@ -376,7 +376,7 @@ static inline int copy_regset_to_user(struct task_struct *target,
> if (!regset->get)
> return -EOPNOTSUPP;
>
> - if (!access_ok(VERIFY_WRITE, data, size))
> + if (!access_ok(data, size))
> return -EFAULT;
>
> return regset->get(target, regset, offset, size, NULL, data);
> @@ -402,7 +402,7 @@ static inline int copy_regset_from_user(struct task_struct *target,
> if (!regset->set)
> return -EOPNOTSUPP;
>
> - if (!access_ok(VERIFY_READ, data, size))
> + if (!access_ok(data, size))
> return -EFAULT;
>
> return regset->set(target, regset, offset, size, NULL, data);
> diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h
> index efe79c1cdd47..bf2523867a02 100644
> --- a/include/linux/uaccess.h
> +++ b/include/linux/uaccess.h
> @@ -6,9 +6,6 @@
> #include <linux/thread_info.h>
> #include <linux/kasan-checks.h>
>
> -#define VERIFY_READ 0
> -#define VERIFY_WRITE 1
> -
> #define uaccess_kernel() segment_eq(get_fs(), KERNEL_DS)
>
> #include <asm/uaccess.h>
> @@ -111,7 +108,7 @@ _copy_from_user(void *to, const void __user *from, unsigned long n)
> {
> unsigned long res = n;
> might_fault();
> - if (likely(access_ok(VERIFY_READ, from, n))) {
> + if (likely(access_ok(from, n))) {
> kasan_check_write(to, n);
> res = raw_copy_from_user(to, from, n);
> }
> @@ -129,7 +126,7 @@ static inline unsigned long
> _copy_to_user(void __user *to, const void *from, unsigned long n)
> {
> might_fault();
> - if (access_ok(VERIFY_WRITE, to, n)) {
> + if (access_ok(to, n)) {
> kasan_check_read(from, n);
> n = raw_copy_to_user(to, from, n);
> }
> @@ -160,7 +157,7 @@ static __always_inline unsigned long __must_check
> copy_in_user(void __user *to, const void __user *from, unsigned long n)
> {
> might_fault();
> - if (access_ok(VERIFY_WRITE, to, n) && access_ok(VERIFY_READ, from, n))
> + if (access_ok(to, n) && access_ok(from, n))
> n = raw_copy_in_user(to, from, n);
> return n;
> }
> diff --git a/include/net/checksum.h b/include/net/checksum.h
> index aef2b2bb6603..0f319e13be2c 100644
> --- a/include/net/checksum.h
> +++ b/include/net/checksum.h
> @@ -30,7 +30,7 @@ static inline
> __wsum csum_and_copy_from_user (const void __user *src, void *dst,
> int len, __wsum sum, int *err_ptr)
> {
> - if (access_ok(VERIFY_READ, src, len))
> + if (access_ok(src, len))
> return csum_partial_copy_from_user(src, dst, len, sum, err_ptr);
>
> if (len)
> @@ -46,7 +46,7 @@ static __inline__ __wsum csum_and_copy_to_user
> {
> sum = csum_partial(src, len, sum);
>
> - if (access_ok(VERIFY_WRITE, dst, len)) {
> + if (access_ok(dst, len)) {
> if (copy_to_user(dst, src, len) == 0)
> return sum;
> }
> diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
> index 0607db304def..b155cd17c1bd 100644
> --- a/kernel/bpf/syscall.c
> +++ b/kernel/bpf/syscall.c
> @@ -79,7 +79,7 @@ int bpf_check_uarg_tail_zero(void __user *uaddr,
> if (unlikely(actual_size > PAGE_SIZE)) /* silly large */
> return -E2BIG;
>
> - if (unlikely(!access_ok(VERIFY_READ, uaddr, actual_size)))
> + if (unlikely(!access_ok(uaddr, actual_size)))
> return -EFAULT;
>
> if (actual_size <= expected_size)
> diff --git a/kernel/compat.c b/kernel/compat.c
> index 089d00d0da9c..705d4ae6c018 100644
> --- a/kernel/compat.c
> +++ b/kernel/compat.c
> @@ -95,28 +95,28 @@ int compat_put_timex(struct compat_timex __user *utp, const struct timex *txc)
>
> static int __compat_get_timeval(struct timeval *tv, const struct old_timeval32 __user *ctv)
> {
> - return (!access_ok(VERIFY_READ, ctv, sizeof(*ctv)) ||
> + return (!access_ok(ctv, sizeof(*ctv)) ||
> __get_user(tv->tv_sec, &ctv->tv_sec) ||
> __get_user(tv->tv_usec, &ctv->tv_usec)) ? -EFAULT : 0;
> }
>
> static int __compat_put_timeval(const struct timeval *tv, struct old_timeval32 __user *ctv)
> {
> - return (!access_ok(VERIFY_WRITE, ctv, sizeof(*ctv)) ||
> + return (!access_ok(ctv, sizeof(*ctv)) ||
> __put_user(tv->tv_sec, &ctv->tv_sec) ||
> __put_user(tv->tv_usec, &ctv->tv_usec)) ? -EFAULT : 0;
> }
>
> static int __compat_get_timespec(struct timespec *ts, const struct old_timespec32 __user *cts)
> {
> - return (!access_ok(VERIFY_READ, cts, sizeof(*cts)) ||
> + return (!access_ok(cts, sizeof(*cts)) ||
> __get_user(ts->tv_sec, &cts->tv_sec) ||
> __get_user(ts->tv_nsec, &cts->tv_nsec)) ? -EFAULT : 0;
> }
>
> static int __compat_put_timespec(const struct timespec *ts, struct old_timespec32 __user *cts)
> {
> - return (!access_ok(VERIFY_WRITE, cts, sizeof(*cts)) ||
> + return (!access_ok(cts, sizeof(*cts)) ||
> __put_user(ts->tv_sec, &cts->tv_sec) ||
> __put_user(ts->tv_nsec, &cts->tv_nsec)) ? -EFAULT : 0;
> }
> @@ -335,7 +335,7 @@ int get_compat_sigevent(struct sigevent *event,
> const struct compat_sigevent __user *u_event)
> {
> memset(event, 0, sizeof(*event));
> - return (!access_ok(VERIFY_READ, u_event, sizeof(*u_event)) ||
> + return (!access_ok(u_event, sizeof(*u_event)) ||
> __get_user(event->sigev_value.sival_int,
> &u_event->sigev_value.sival_int) ||
> __get_user(event->sigev_signo, &u_event->sigev_signo) ||
> @@ -354,7 +354,7 @@ long compat_get_bitmap(unsigned long *mask, const compat_ulong_t __user *umask,
> bitmap_size = ALIGN(bitmap_size, BITS_PER_COMPAT_LONG);
> nr_compat_longs = BITS_TO_COMPAT_LONGS(bitmap_size);
>
> - if (!access_ok(VERIFY_READ, umask, bitmap_size / 8))
> + if (!access_ok(umask, bitmap_size / 8))
> return -EFAULT;
>
> user_access_begin();
> @@ -384,7 +384,7 @@ long compat_put_bitmap(compat_ulong_t __user *umask, unsigned long *mask,
> bitmap_size = ALIGN(bitmap_size, BITS_PER_COMPAT_LONG);
> nr_compat_longs = BITS_TO_COMPAT_LONGS(bitmap_size);
>
> - if (!access_ok(VERIFY_WRITE, umask, bitmap_size / 8))
> + if (!access_ok(umask, bitmap_size / 8))
> return -EFAULT;
>
> user_access_begin();
> @@ -438,7 +438,7 @@ void __user *compat_alloc_user_space(unsigned long len)
>
> ptr = arch_compat_alloc_user_space(len);
>
> - if (unlikely(!access_ok(VERIFY_WRITE, ptr, len)))
> + if (unlikely(!access_ok(ptr, len)))
> return NULL;
>
> return ptr;
> diff --git a/kernel/events/core.c b/kernel/events/core.c
> index 67ecac337374..3cd13a30f732 100644
> --- a/kernel/events/core.c
> +++ b/kernel/events/core.c
> @@ -10135,7 +10135,7 @@ static int perf_copy_attr(struct perf_event_attr __user *uattr,
> u32 size;
> int ret;
>
> - if (!access_ok(VERIFY_WRITE, uattr, PERF_ATTR_SIZE_VER0))
> + if (!access_ok(uattr, PERF_ATTR_SIZE_VER0))
> return -EFAULT;
>
> /*
> diff --git a/kernel/exit.c b/kernel/exit.c
> index 0e21e6d21f35..8a01b671dc1f 100644
> --- a/kernel/exit.c
> +++ b/kernel/exit.c
> @@ -1604,7 +1604,7 @@ SYSCALL_DEFINE5(waitid, int, which, pid_t, upid, struct siginfo __user *,
> if (!infop)
> return err;
>
> - if (!access_ok(VERIFY_WRITE, infop, sizeof(*infop)))
> + if (!access_ok(infop, sizeof(*infop)))
> return -EFAULT;
>
> user_access_begin();
> @@ -1732,7 +1732,7 @@ COMPAT_SYSCALL_DEFINE5(waitid,
> if (!infop)
> return err;
>
> - if (!access_ok(VERIFY_WRITE, infop, sizeof(*infop)))
> + if (!access_ok(infop, sizeof(*infop)))
> return -EFAULT;
>
> user_access_begin();
> diff --git a/kernel/futex.c b/kernel/futex.c
> index 054105854e0e..be3bff2315ff 100644
> --- a/kernel/futex.c
> +++ b/kernel/futex.c
> @@ -481,13 +481,18 @@ static void drop_futex_key_refs(union futex_key *key)
> }
> }
>
> +enum futex_access {
> + FUTEX_READ,
> + FUTEX_WRITE
> +};
> +
> /**
> * get_futex_key() - Get parameters which are the keys for a futex
> * @uaddr: virtual address of the futex
> * @fshared: 0 for a PROCESS_PRIVATE futex, 1 for PROCESS_SHARED
> * @key: address where result is stored.
> - * @rw: mapping needs to be read/write (values: VERIFY_READ,
> - * VERIFY_WRITE)
> + * @rw: mapping needs to be read/write (values: FUTEX_READ,
> + * FUTEX_WRITE)
> *
> * Return: a negative error code or 0
> *
> @@ -500,7 +505,7 @@ static void drop_futex_key_refs(union futex_key *key)
> * lock_page() might sleep, the caller should not hold a spinlock.
> */
> static int
> -get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw)
> +get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, enum futex_access rw)
> {
> unsigned long address = (unsigned long)uaddr;
> struct mm_struct *mm = current->mm;
> @@ -516,7 +521,7 @@ get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw)
> return -EINVAL;
> address -= key->both.offset;
>
> - if (unlikely(!access_ok(rw, uaddr, sizeof(u32))))
> + if (unlikely(!access_ok(uaddr, sizeof(u32))))
> return -EFAULT;
>
> if (unlikely(should_fail_futex(fshared)))
> @@ -546,7 +551,7 @@ get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw)
> * If write access is not required (eg. FUTEX_WAIT), try
> * and get read-only access.
> */
> - if (err == -EFAULT && rw == VERIFY_READ) {
> + if (err == -EFAULT && rw == FUTEX_READ) {
> err = get_user_pages_fast(address, 1, 0, &page);
> ro = 1;
> }
> @@ -1583,7 +1588,7 @@ futex_wake(u32 __user *uaddr, unsigned int flags, int nr_wake, u32 bitset)
> if (!bitset)
> return -EINVAL;
>
> - ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &key, VERIFY_READ);
> + ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &key, FUTEX_READ);
> if (unlikely(ret != 0))
> goto out;
>
> @@ -1642,7 +1647,7 @@ static int futex_atomic_op_inuser(unsigned int encoded_op, u32 __user *uaddr)
> oparg = 1 << oparg;
> }
>
> - if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
> + if (!access_ok(uaddr, sizeof(u32)))
> return -EFAULT;
>
> ret = arch_futex_atomic_op_inuser(op, oparg, &oldval, uaddr);
> @@ -1682,10 +1687,10 @@ futex_wake_op(u32 __user *uaddr1, unsigned int flags, u32 __user *uaddr2,
> DEFINE_WAKE_Q(wake_q);
>
> retry:
> - ret = get_futex_key(uaddr1, flags & FLAGS_SHARED, &key1, VERIFY_READ);
> + ret = get_futex_key(uaddr1, flags & FLAGS_SHARED, &key1, FUTEX_READ);
> if (unlikely(ret != 0))
> goto out;
> - ret = get_futex_key(uaddr2, flags & FLAGS_SHARED, &key2, VERIFY_WRITE);
> + ret = get_futex_key(uaddr2, flags & FLAGS_SHARED, &key2, FUTEX_WRITE);
> if (unlikely(ret != 0))
> goto out_put_key1;
>
> @@ -1961,11 +1966,11 @@ static int futex_requeue(u32 __user *uaddr1, unsigned int flags,
> }
>
> retry:
> - ret = get_futex_key(uaddr1, flags & FLAGS_SHARED, &key1, VERIFY_READ);
> + ret = get_futex_key(uaddr1, flags & FLAGS_SHARED, &key1, FUTEX_READ);
> if (unlikely(ret != 0))
> goto out;
> ret = get_futex_key(uaddr2, flags & FLAGS_SHARED, &key2,
> - requeue_pi ? VERIFY_WRITE : VERIFY_READ);
> + requeue_pi ? FUTEX_WRITE : FUTEX_READ);
> if (unlikely(ret != 0))
> goto out_put_key1;
>
> @@ -2634,7 +2639,7 @@ static int futex_wait_setup(u32 __user *uaddr, u32 val, unsigned int flags,
> * while the syscall executes.
> */
> retry:
> - ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &q->key, VERIFY_READ);
> + ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &q->key, FUTEX_READ);
> if (unlikely(ret != 0))
> return ret;
>
> @@ -2793,7 +2798,7 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags,
> }
>
> retry:
> - ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &q.key, VERIFY_WRITE);
> + ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &q.key, FUTEX_WRITE);
> if (unlikely(ret != 0))
> goto out;
>
> @@ -2972,7 +2977,7 @@ static int futex_unlock_pi(u32 __user *uaddr, unsigned int flags)
> if ((uval & FUTEX_TID_MASK) != vpid)
> return -EPERM;
>
> - ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &key, VERIFY_WRITE);
> + ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &key, FUTEX_WRITE);
> if (ret)
> return ret;
>
> @@ -3199,7 +3204,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags,
> */
> rt_mutex_init_waiter(&rt_waiter);
>
> - ret = get_futex_key(uaddr2, flags & FLAGS_SHARED, &key2, VERIFY_WRITE);
> + ret = get_futex_key(uaddr2, flags & FLAGS_SHARED, &key2, FUTEX_WRITE);
> if (unlikely(ret != 0))
> goto out;
>
> diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
> index 1306fe0c1dc6..d3d170374ceb 100644
> --- a/kernel/printk/printk.c
> +++ b/kernel/printk/printk.c
> @@ -1466,7 +1466,7 @@ int do_syslog(int type, char __user *buf, int len, int source)
> return -EINVAL;
> if (!len)
> return 0;
> - if (!access_ok(VERIFY_WRITE, buf, len))
> + if (!access_ok(buf, len))
> return -EFAULT;
> error = wait_event_interruptible(log_wait,
> syslog_seq != log_next_seq);
> @@ -1484,7 +1484,7 @@ int do_syslog(int type, char __user *buf, int len, int source)
> return -EINVAL;
> if (!len)
> return 0;
> - if (!access_ok(VERIFY_WRITE, buf, len))
> + if (!access_ok(buf, len))
> return -EFAULT;
> error = syslog_print_all(buf, len, clear);
> break;
> diff --git a/kernel/ptrace.c b/kernel/ptrace.c
> index c2cee9db5204..771e93f9c43f 100644
> --- a/kernel/ptrace.c
> +++ b/kernel/ptrace.c
> @@ -1073,7 +1073,7 @@ int ptrace_request(struct task_struct *child, long request,
> struct iovec kiov;
> struct iovec __user *uiov = datavp;
>
> - if (!access_ok(VERIFY_WRITE, uiov, sizeof(*uiov)))
> + if (!access_ok(uiov, sizeof(*uiov)))
> return -EFAULT;
>
> if (__get_user(kiov.iov_base, &uiov->iov_base) ||
> @@ -1229,7 +1229,7 @@ int compat_ptrace_request(struct task_struct *child, compat_long_t request,
> compat_uptr_t ptr;
> compat_size_t len;
>
> - if (!access_ok(VERIFY_WRITE, uiov, sizeof(*uiov)))
> + if (!access_ok(uiov, sizeof(*uiov)))
> return -EFAULT;
>
> if (__get_user(ptr, &uiov->iov_base) ||
> 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)
>
> if (unlikely(t->flags & PF_EXITING))
> return;
> - if (unlikely(!access_ok(VERIFY_WRITE, t->rseq, sizeof(*t->rseq))))
> + if (unlikely(!access_ok(t->rseq, sizeof(*t->rseq))))
> goto error;
> ret = rseq_ip_fixup(regs);
> if (unlikely(ret < 0))
> @@ -295,7 +295,7 @@ void rseq_syscall(struct pt_regs *regs)
>
> if (!t->rseq)
> return;
> - if (!access_ok(VERIFY_READ, t->rseq, sizeof(*t->rseq)) ||
> + if (!access_ok(t->rseq, sizeof(*t->rseq)) ||
> rseq_get_rseq_cs(t, &rseq_cs) || in_rseq_cs(ip, &rseq_cs))
> force_sig(SIGSEGV, t);
> }
> @@ -351,7 +351,7 @@ SYSCALL_DEFINE4(rseq, struct rseq __user *, rseq, u32, rseq_len,
> if (!IS_ALIGNED((unsigned long)rseq, __alignof__(*rseq)) ||
> rseq_len != sizeof(*rseq))
> return -EINVAL;
> - if (!access_ok(VERIFY_WRITE, rseq, rseq_len))
> + if (!access_ok(rseq, rseq_len))
> return -EFAULT;
> current->rseq = rseq;
> current->rseq_len = rseq_len;
> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> index f66920173370..1f3e19fd6dc6 100644
> --- a/kernel/sched/core.c
> +++ b/kernel/sched/core.c
> @@ -4450,7 +4450,7 @@ static int sched_copy_attr(struct sched_attr __user *uattr, struct sched_attr *a
> u32 size;
> int ret;
>
> - if (!access_ok(VERIFY_WRITE, uattr, SCHED_ATTR_SIZE_VER0))
> + if (!access_ok(uattr, SCHED_ATTR_SIZE_VER0))
> return -EFAULT;
>
> /* Zero the full structure, so that a short copy will be nice: */
> @@ -4650,7 +4650,7 @@ static int sched_read_attr(struct sched_attr __user *uattr,
> {
> int ret;
>
> - if (!access_ok(VERIFY_WRITE, uattr, usize))
> + if (!access_ok(uattr, usize))
> return -EFAULT;
>
> /*
> diff --git a/kernel/signal.c b/kernel/signal.c
> index 53e07d97ffe0..e1d7ad8e6ab1 100644
> --- a/kernel/signal.c
> +++ b/kernel/signal.c
> @@ -3997,7 +3997,7 @@ SYSCALL_DEFINE3(sigaction, int, sig,
>
> if (act) {
> old_sigset_t mask;
> - if (!access_ok(VERIFY_READ, act, sizeof(*act)) ||
> + if (!access_ok(act, sizeof(*act)) ||
> __get_user(new_ka.sa.sa_handler, &act->sa_handler) ||
> __get_user(new_ka.sa.sa_restorer, &act->sa_restorer) ||
> __get_user(new_ka.sa.sa_flags, &act->sa_flags) ||
> @@ -4012,7 +4012,7 @@ SYSCALL_DEFINE3(sigaction, int, sig,
> ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
>
> if (!ret && oact) {
> - if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) ||
> + if (!access_ok(oact, sizeof(*oact)) ||
> __put_user(old_ka.sa.sa_handler, &oact->sa_handler) ||
> __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer) ||
> __put_user(old_ka.sa.sa_flags, &oact->sa_flags) ||
> @@ -4034,7 +4034,7 @@ COMPAT_SYSCALL_DEFINE3(sigaction, int, sig,
> compat_uptr_t handler, restorer;
>
> if (act) {
> - if (!access_ok(VERIFY_READ, act, sizeof(*act)) ||
> + if (!access_ok(act, sizeof(*act)) ||
> __get_user(handler, &act->sa_handler) ||
> __get_user(restorer, &act->sa_restorer) ||
> __get_user(new_ka.sa.sa_flags, &act->sa_flags) ||
> @@ -4052,7 +4052,7 @@ COMPAT_SYSCALL_DEFINE3(sigaction, int, sig,
> ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
>
> if (!ret && oact) {
> - if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) ||
> + if (!access_ok(oact, sizeof(*oact)) ||
> __put_user(ptr_to_compat(old_ka.sa.sa_handler),
> &oact->sa_handler) ||
> __put_user(ptr_to_compat(old_ka.sa.sa_restorer),
> diff --git a/kernel/sys.c b/kernel/sys.c
> index 64b5a230f38d..a48cbf1414b8 100644
> --- a/kernel/sys.c
> +++ b/kernel/sys.c
> @@ -2627,7 +2627,7 @@ COMPAT_SYSCALL_DEFINE1(sysinfo, struct compat_sysinfo __user *, info)
> s.freehigh >>= bitcount;
> }
>
> - if (!access_ok(VERIFY_WRITE, info, sizeof(struct compat_sysinfo)) ||
> + if (!access_ok(info, sizeof(struct compat_sysinfo)) ||
> __put_user(s.uptime, &info->uptime) ||
> __put_user(s.loads[0], &info->loads[0]) ||
> __put_user(s.loads[1], &info->loads[1]) ||
> diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c
> index 9ddb6fddb4e0..8b068adb9da1 100644
> --- a/kernel/trace/bpf_trace.c
> +++ b/kernel/trace/bpf_trace.c
> @@ -170,7 +170,7 @@ BPF_CALL_3(bpf_probe_write_user, void *, unsafe_ptr, const void *, src,
> return -EPERM;
> if (unlikely(uaccess_kernel()))
> return -EPERM;
> - if (!access_ok(VERIFY_WRITE, unsafe_ptr, size))
> + if (!access_ok(unsafe_ptr, size))
> return -EPERM;
>
> return probe_kernel_write(unsafe_ptr, src, size);
> diff --git a/lib/bitmap.c b/lib/bitmap.c
> index eead55aa7170..98872e9025da 100644
> --- a/lib/bitmap.c
> +++ b/lib/bitmap.c
> @@ -443,7 +443,7 @@ int bitmap_parse_user(const char __user *ubuf,
> unsigned int ulen, unsigned long *maskp,
> int nmaskbits)
> {
> - if (!access_ok(VERIFY_READ, ubuf, ulen))
> + if (!access_ok(ubuf, ulen))
> return -EFAULT;
> return __bitmap_parse((const char __force *)ubuf,
> ulen, 1, maskp, nmaskbits);
> @@ -641,7 +641,7 @@ int bitmap_parselist_user(const char __user *ubuf,
> unsigned int ulen, unsigned long *maskp,
> int nmaskbits)
> {
> - if (!access_ok(VERIFY_READ, ubuf, ulen))
> + if (!access_ok(ubuf, ulen))
> return -EFAULT;
> return __bitmap_parselist((const char __force *)ubuf,
> ulen, 1, maskp, nmaskbits);
> diff --git a/lib/iov_iter.c b/lib/iov_iter.c
> index 1928009f506e..c93870987b58 100644
> --- a/lib/iov_iter.c
> +++ b/lib/iov_iter.c
> @@ -136,7 +136,7 @@
>
> static int copyout(void __user *to, const void *from, size_t n)
> {
> - if (access_ok(VERIFY_WRITE, to, n)) {
> + if (access_ok(to, n)) {
> kasan_check_read(from, n);
> n = raw_copy_to_user(to, from, n);
> }
> @@ -145,7 +145,7 @@ static int copyout(void __user *to, const void *from, size_t n)
>
> static int copyin(void *to, const void __user *from, size_t n)
> {
> - if (access_ok(VERIFY_READ, from, n)) {
> + if (access_ok(from, n)) {
> kasan_check_write(to, n);
> n = raw_copy_from_user(to, from, n);
> }
> @@ -614,7 +614,7 @@ EXPORT_SYMBOL(_copy_to_iter);
> #ifdef CONFIG_ARCH_HAS_UACCESS_MCSAFE
> static int copyout_mcsafe(void __user *to, const void *from, size_t n)
> {
> - if (access_ok(VERIFY_WRITE, to, n)) {
> + if (access_ok(to, n)) {
> kasan_check_read(from, n);
> n = copy_to_user_mcsafe((__force void *) to, from, n);
> }
> @@ -1663,7 +1663,7 @@ int import_single_range(int rw, void __user *buf, size_t len,
> {
> if (len > MAX_RW_COUNT)
> len = MAX_RW_COUNT;
> - if (unlikely(!access_ok(!rw, buf, len)))
> + if (unlikely(!access_ok(buf, len)))
> return -EFAULT;
>
> iov->iov_base = buf;
> diff --git a/lib/usercopy.c b/lib/usercopy.c
> index 3744b2a8e591..c2bfbcaeb3dc 100644
> --- a/lib/usercopy.c
> +++ b/lib/usercopy.c
> @@ -8,7 +8,7 @@ unsigned long _copy_from_user(void *to, const void __user *from, unsigned long n
> {
> unsigned long res = n;
> might_fault();
> - if (likely(access_ok(VERIFY_READ, from, n))) {
> + if (likely(access_ok(from, n))) {
> kasan_check_write(to, n);
> res = raw_copy_from_user(to, from, n);
> }
> @@ -23,7 +23,7 @@ EXPORT_SYMBOL(_copy_from_user);
> unsigned long _copy_to_user(void __user *to, const void *from, unsigned long n)
> {
> might_fault();
> - if (likely(access_ok(VERIFY_WRITE, to, n))) {
> + if (likely(access_ok(to, n))) {
> kasan_check_read(from, n);
> n = raw_copy_to_user(to, from, n);
> }
> diff --git a/mm/gup.c b/mm/gup.c
> index 8cb68a50dbdf..6f591ccb8eca 100644
> --- a/mm/gup.c
> +++ b/mm/gup.c
> @@ -1813,8 +1813,7 @@ int __get_user_pages_fast(unsigned long start, int nr_pages, int write,
> len = (unsigned long) nr_pages << PAGE_SHIFT;
> end = start + len;
>
> - if (unlikely(!access_ok(write ? VERIFY_WRITE : VERIFY_READ,
> - (void __user *)start, len)))
> + if (unlikely(!access_ok((void __user *)start, len)))
> return 0;
>
> /*
> @@ -1868,8 +1867,7 @@ int get_user_pages_fast(unsigned long start, int nr_pages, int write,
> if (nr_pages <= 0)
> return 0;
>
> - if (unlikely(!access_ok(write ? VERIFY_WRITE : VERIFY_READ,
> - (void __user *)start, len)))
> + if (unlikely(!access_ok((void __user *)start, len)))
> return -EFAULT;
>
> if (gup_fast_permitted(start, nr_pages, write)) {
> diff --git a/mm/mincore.c b/mm/mincore.c
> index 4985965aa20a..218099b5ed31 100644
> --- a/mm/mincore.c
> +++ b/mm/mincore.c
> @@ -233,14 +233,14 @@ SYSCALL_DEFINE3(mincore, unsigned long, start, size_t, len,
> return -EINVAL;
>
> /* ..and we need to be passed a valid user-space range */
> - if (!access_ok(VERIFY_READ, (void __user *) start, len))
> + if (!access_ok((void __user *) start, len))
> return -ENOMEM;
>
> /* This also avoids any overflows on PAGE_ALIGN */
> pages = len >> PAGE_SHIFT;
> pages += (offset_in_page(len)) != 0;
>
> - if (!access_ok(VERIFY_WRITE, vec, pages))
> + if (!access_ok(vec, pages))
> return -EFAULT;
>
> tmp = (void *) __get_free_page(GFP_USER);
> diff --git a/net/batman-adv/icmp_socket.c b/net/batman-adv/icmp_socket.c
> index d70f363c52ae..6d5859714f52 100644
> --- a/net/batman-adv/icmp_socket.c
> +++ b/net/batman-adv/icmp_socket.c
> @@ -147,7 +147,7 @@ static ssize_t batadv_socket_read(struct file *file, char __user *buf,
> if (!buf || count < sizeof(struct batadv_icmp_packet))
> return -EINVAL;
>
> - if (!access_ok(VERIFY_WRITE, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT;
>
> error = wait_event_interruptible(socket_client->queue_wait,
> diff --git a/net/batman-adv/log.c b/net/batman-adv/log.c
> index 02e55b78132f..75f602e1ce94 100644
> --- a/net/batman-adv/log.c
> +++ b/net/batman-adv/log.c
> @@ -136,7 +136,7 @@ static ssize_t batadv_log_read(struct file *file, char __user *buf,
> if (count == 0)
> return 0;
>
> - if (!access_ok(VERIFY_WRITE, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT;
>
> error = wait_event_interruptible(debug_log->queue_wait,
> diff --git a/net/compat.c b/net/compat.c
> index c3a2f868e8af..959d1c51826d 100644
> --- a/net/compat.c
> +++ b/net/compat.c
> @@ -358,7 +358,7 @@ static int do_set_sock_timeout(struct socket *sock, int level,
>
> if (optlen < sizeof(*up))
> return -EINVAL;
> - if (!access_ok(VERIFY_READ, up, sizeof(*up)) ||
> + if (!access_ok(up, sizeof(*up)) ||
> __get_user(ktime.tv_sec, &up->tv_sec) ||
> __get_user(ktime.tv_usec, &up->tv_usec))
> return -EFAULT;
> @@ -438,7 +438,7 @@ static int do_get_sock_timeout(struct socket *sock, int level, int optname,
>
> if (!err) {
> if (put_user(sizeof(*up), optlen) ||
> - !access_ok(VERIFY_WRITE, up, sizeof(*up)) ||
> + !access_ok(up, sizeof(*up)) ||
> __put_user(ktime.tv_sec, &up->tv_sec) ||
> __put_user(ktime.tv_usec, &up->tv_usec))
> err = -EFAULT;
> @@ -590,8 +590,8 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname,
> compat_alloc_user_space(sizeof(struct group_req));
> u32 interface;
>
> - if (!access_ok(VERIFY_READ, gr32, sizeof(*gr32)) ||
> - !access_ok(VERIFY_WRITE, kgr, sizeof(struct group_req)) ||
> + if (!access_ok(gr32, sizeof(*gr32)) ||
> + !access_ok(kgr, sizeof(struct group_req)) ||
> __get_user(interface, &gr32->gr_interface) ||
> __put_user(interface, &kgr->gr_interface) ||
> copy_in_user(&kgr->gr_group, &gr32->gr_group,
> @@ -611,8 +611,8 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname,
> sizeof(struct group_source_req));
> u32 interface;
>
> - if (!access_ok(VERIFY_READ, gsr32, sizeof(*gsr32)) ||
> - !access_ok(VERIFY_WRITE, kgsr,
> + if (!access_ok(gsr32, sizeof(*gsr32)) ||
> + !access_ok(kgsr,
> sizeof(struct group_source_req)) ||
> __get_user(interface, &gsr32->gsr_interface) ||
> __put_user(interface, &kgsr->gsr_interface) ||
> @@ -631,7 +631,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname,
> struct group_filter __user *kgf;
> u32 interface, fmode, numsrc;
>
> - if (!access_ok(VERIFY_READ, gf32, __COMPAT_GF0_SIZE) ||
> + if (!access_ok(gf32, __COMPAT_GF0_SIZE) ||
> __get_user(interface, &gf32->gf_interface) ||
> __get_user(fmode, &gf32->gf_fmode) ||
> __get_user(numsrc, &gf32->gf_numsrc))
> @@ -641,7 +641,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname,
> if (koptlen < GROUP_FILTER_SIZE(numsrc))
> return -EINVAL;
> kgf = compat_alloc_user_space(koptlen);
> - if (!access_ok(VERIFY_WRITE, kgf, koptlen) ||
> + if (!access_ok(kgf, koptlen) ||
> __put_user(interface, &kgf->gf_interface) ||
> __put_user(fmode, &kgf->gf_fmode) ||
> __put_user(numsrc, &kgf->gf_numsrc) ||
> @@ -675,7 +675,7 @@ int compat_mc_getsockopt(struct sock *sock, int level, int optname,
> return getsockopt(sock, level, optname, optval, optlen);
>
> koptlen = compat_alloc_user_space(sizeof(*koptlen));
> - if (!access_ok(VERIFY_READ, optlen, sizeof(*optlen)) ||
> + if (!access_ok(optlen, sizeof(*optlen)) ||
> __get_user(ulen, optlen))
> return -EFAULT;
>
> @@ -685,14 +685,14 @@ int compat_mc_getsockopt(struct sock *sock, int level, int optname,
> if (klen < GROUP_FILTER_SIZE(0))
> return -EINVAL;
>
> - if (!access_ok(VERIFY_WRITE, koptlen, sizeof(*koptlen)) ||
> + if (!access_ok(koptlen, sizeof(*koptlen)) ||
> __put_user(klen, koptlen))
> return -EFAULT;
>
> /* have to allow space for previous compat_alloc_user_space, too */
> kgf = compat_alloc_user_space(klen+sizeof(*optlen));
>
> - if (!access_ok(VERIFY_READ, gf32, __COMPAT_GF0_SIZE) ||
> + if (!access_ok(gf32, __COMPAT_GF0_SIZE) ||
> __get_user(interface, &gf32->gf_interface) ||
> __get_user(fmode, &gf32->gf_fmode) ||
> __get_user(numsrc, &gf32->gf_numsrc) ||
> @@ -706,18 +706,18 @@ int compat_mc_getsockopt(struct sock *sock, int level, int optname,
> if (err)
> return err;
>
> - if (!access_ok(VERIFY_READ, koptlen, sizeof(*koptlen)) ||
> + if (!access_ok(koptlen, sizeof(*koptlen)) ||
> __get_user(klen, koptlen))
> return -EFAULT;
>
> ulen = klen - (sizeof(*kgf)-sizeof(*gf32));
>
> - if (!access_ok(VERIFY_WRITE, optlen, sizeof(*optlen)) ||
> + if (!access_ok(optlen, sizeof(*optlen)) ||
> __put_user(ulen, optlen))
> return -EFAULT;
>
> - if (!access_ok(VERIFY_READ, kgf, klen) ||
> - !access_ok(VERIFY_WRITE, gf32, ulen) ||
> + if (!access_ok(kgf, klen) ||
> + !access_ok(gf32, ulen) ||
> __get_user(interface, &kgf->gf_interface) ||
> __get_user(fmode, &kgf->gf_fmode) ||
> __get_user(numsrc, &kgf->gf_numsrc) ||
> diff --git a/net/sunrpc/sysctl.c b/net/sunrpc/sysctl.c
> index 8c3936403fea..0bea8ff8b0d3 100644
> --- a/net/sunrpc/sysctl.c
> +++ b/net/sunrpc/sysctl.c
> @@ -89,7 +89,7 @@ proc_dodebug(struct ctl_table *table, int write,
> left = *lenp;
>
> if (write) {
> - if (!access_ok(VERIFY_READ, buffer, left))
> + if (!access_ok(buffer, left))
> return -EFAULT;
> p = buffer;
> while (left && __get_user(c, p) >= 0 && isspace(c))
> diff --git a/security/tomoyo/common.c b/security/tomoyo/common.c
> index 9b38f94b5dd0..c598aa00d5e3 100644
> --- a/security/tomoyo/common.c
> +++ b/security/tomoyo/common.c
> @@ -2591,7 +2591,7 @@ ssize_t tomoyo_write_control(struct tomoyo_io_buffer *head,
> int idx;
> if (!head->write)
> return -ENOSYS;
> - if (!access_ok(VERIFY_READ, buffer, buffer_len))
> + if (!access_ok(buffer, buffer_len))
> return -EFAULT;
> if (mutex_lock_interruptible(&head->io_sem))
> return -EINTR;
> diff --git a/sound/core/seq/seq_clientmgr.c b/sound/core/seq/seq_clientmgr.c
> index 92e6524a3a9d..7d4640d1fe9f 100644
> --- a/sound/core/seq/seq_clientmgr.c
> +++ b/sound/core/seq/seq_clientmgr.c
> @@ -393,7 +393,7 @@ static ssize_t snd_seq_read(struct file *file, char __user *buf, size_t count,
> if (!(snd_seq_file_flags(file) & SNDRV_SEQ_LFLG_INPUT))
> return -ENXIO;
>
> - if (!access_ok(VERIFY_WRITE, buf, count))
> + if (!access_ok(buf, count))
> return -EFAULT;
>
> /* check client structures are in place */
> diff --git a/sound/isa/sb/emu8000_patch.c b/sound/isa/sb/emu8000_patch.c
> index d45a6b9d6437..3d44c358c4b3 100644
> --- a/sound/isa/sb/emu8000_patch.c
> +++ b/sound/isa/sb/emu8000_patch.c
> @@ -183,10 +183,10 @@ snd_emu8000_sample_new(struct snd_emux *rec, struct snd_sf_sample *sp,
> }
>
> if (sp->v.mode_flags & SNDRV_SFNT_SAMPLE_8BITS) {
> - if (!access_ok(VERIFY_READ, data, sp->v.size))
> + if (!access_ok(data, sp->v.size))
> return -EFAULT;
> } else {
> - if (!access_ok(VERIFY_READ, data, sp->v.size * 2))
> + if (!access_ok(data, sp->v.size * 2))
> return -EFAULT;
> }
>
> diff --git a/tools/perf/util/include/asm/uaccess.h b/tools/perf/util/include/asm/uaccess.h
> index 6a6f4b990547..548100315710 100644
> --- a/tools/perf/util/include/asm/uaccess.h
> +++ b/tools/perf/util/include/asm/uaccess.h
> @@ -10,6 +10,6 @@
>
> #define get_user __get_user
>
> -#define access_ok(type, addr, size) 1
> +#define access_ok(addr, size) 1
>
> #endif
> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
> index 666d0155662d..1f888a103f78 100644
> --- a/virt/kvm/kvm_main.c
> +++ b/virt/kvm/kvm_main.c
> @@ -939,8 +939,7 @@ int __kvm_set_memory_region(struct kvm *kvm,
> /* We can read the guest memory with __xxx_user() later on. */
> if ((id < KVM_USER_MEM_SLOTS) &&
> ((mem->userspace_addr & (PAGE_SIZE - 1)) ||
> - !access_ok(VERIFY_WRITE,
> - (void __user *)(unsigned long)mem->userspace_addr,
> + !access_ok((void __user *)(unsigned long)mem->userspace_addr,
> mem->memory_size)))
> goto out;
> if (as_id >= KVM_ADDRESS_SPACE_NUM || id >= KVM_MEM_SLOTS_NUM)
> --
> 2.7.4