lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190104174242.GA9173@roeck-us.net>
Date:   Fri, 4 Jan 2019 09:42:42 -0800
From:   Guenter Roeck <linux@...ck-us.net>
To:     Linus Torvalds <torvalds@...ux-foundation.org>
Cc:     linux-kernel@...r.kernel.org
Subject: Re: [PATCH] Remove 'type' argument from access_ok() function

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@...ux-foundation.org>

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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ