···3131{3232 int oldval = 0, ret;33333434- pagefault_disable();3434+ if (!access_ok(uaddr, sizeof(u32)))3535+ return -EFAULT;35363637 switch (op) {3738 case FUTEX_OP_SET:···5352 default:5453 ret = -ENOSYS;5554 }5656-5757- pagefault_enable();58555956 if (!ret)6057 *oval = oldval;
+3-2
arch/arc/include/asm/futex.h
···7575{7676 int oldval = 0, ret;77777878+ if (!access_ok(uaddr, sizeof(u32)))7979+ return -EFAULT;8080+7881#ifndef CONFIG_ARC_HAS_LLSC7982 preempt_disable(); /* to guarantee atomic r-m-w of futex op */8083#endif8181- pagefault_disable();82848385 switch (op) {8486 case FUTEX_OP_SET:···103101 ret = -ENOSYS;104102 }105103106106- pagefault_enable();107104#ifndef CONFIG_ARC_HAS_LLSC108105 preempt_enable();109106#endif
···4848 int oldval = 0, ret, tmp;4949 u32 __user *uaddr = __uaccess_mask_ptr(_uaddr);50505151- pagefault_disable();5151+ if (!access_ok(_uaddr, sizeof(u32)))5252+ return -EFAULT;52535354 switch (op) {5455 case FUTEX_OP_SET:···7574 default:7675 ret = -ENOSYS;7776 }7878-7979- pagefault_enable();80778178 if (!ret)8279 *oval = oldval;
+2-3
arch/hexagon/include/asm/futex.h
···3636{3737 int oldval = 0, ret;38383939- pagefault_disable();3939+ if (!access_ok(uaddr, sizeof(u32)))4040+ return -EFAULT;40414142 switch (op) {4243 case FUTEX_OP_SET:···6261 default:6362 ret = -ENOSYS;6463 }6565-6666- pagefault_enable();67646865 if (!ret)6966 *oval = oldval;
+2-3
arch/ia64/include/asm/futex.h
···5050{5151 int oldval = 0, ret;52525353- pagefault_disable();5353+ if (!access_ok(uaddr, sizeof(u32)))5454+ return -EFAULT;54555556 switch (op) {5657 case FUTEX_OP_SET:···7473 default:7574 ret = -ENOSYS;7675 }7777-7878- pagefault_enable();79768077 if (!ret)8178 *oval = oldval;
+2-3
arch/microblaze/include/asm/futex.h
···3434{3535 int oldval = 0, ret;36363737- pagefault_disable();3737+ if (!access_ok(uaddr, sizeof(u32)))3838+ return -EFAULT;38393940 switch (op) {4041 case FUTEX_OP_SET:···5655 default:5756 ret = -ENOSYS;5857 }5959-6060- pagefault_enable();61586259 if (!ret)6360 *oval = oldval;
+2-3
arch/mips/include/asm/futex.h
···8989{9090 int oldval = 0, ret;91919292- pagefault_disable();9292+ if (!access_ok(uaddr, sizeof(u32)))9393+ return -EFAULT;93949495 switch (op) {9596 case FUTEX_OP_SET:···116115 default:117116 ret = -ENOSYS;118117 }119119-120120- pagefault_enable();121118122119 if (!ret)123120 *oval = oldval;
+2-4
arch/nds32/include/asm/futex.h
···6666{6767 int oldval = 0, ret;68686969-7070- pagefault_disable();6969+ if (!access_ok(uaddr, sizeof(u32)))7070+ return -EFAULT;7171 switch (op) {7272 case FUTEX_OP_SET:7373 __futex_atomic_op("move %0, %3", ret, oldval, tmp, uaddr,···9292 default:9393 ret = -ENOSYS;9494 }9595-9696- pagefault_enable();97959896 if (!ret)9997 *oval = oldval;
+2-3
arch/openrisc/include/asm/futex.h
···3535{3636 int oldval = 0, ret;37373838- pagefault_disable();3838+ if (!access_ok(uaddr, sizeof(u32)))3939+ return -EFAULT;39404041 switch (op) {4142 case FUTEX_OP_SET:···5756 default:5857 ret = -ENOSYS;5958 }6060-6161- pagefault_enable();62596360 if (!ret)6461 *oval = oldval;
-2
arch/parisc/include/asm/futex.h
···4040 u32 tmp;41414242 _futex_spin_lock_irqsave(uaddr, &flags);4343- pagefault_disable();44434544 ret = -EFAULT;4645 if (unlikely(get_user(oldval, uaddr) != 0))···7273 ret = -EFAULT;73747475out_pagefault_enable:7575- pagefault_enable();7676 _futex_spin_unlock_irqrestore(uaddr, &flags);77777878 if (!ret)
+2-3
arch/powerpc/include/asm/futex.h
···3535{3636 int oldval = 0, ret;37373838+ if (!access_ok(uaddr, sizeof(u32)))3939+ return -EFAULT;3840 allow_read_write_user(uaddr, uaddr, sizeof(*uaddr));3939- pagefault_disable();40414142 switch (op) {4243 case FUTEX_OP_SET:···5857 default:5958 ret = -ENOSYS;6059 }6161-6262- pagefault_enable();63606461 *oval = oldval;6562
+2-3
arch/riscv/include/asm/futex.h
···4646{4747 int oldval = 0, ret = 0;48484949- pagefault_disable();4949+ if (!access_ok(uaddr, sizeof(u32)))5050+ return -EFAULT;50515152 switch (op) {5253 case FUTEX_OP_SET:···7372 default:7473 ret = -ENOSYS;7574 }7676-7777- pagefault_enable();78757976 if (!ret)8077 *oval = oldval;
-2
arch/s390/include/asm/futex.h
···2929 mm_segment_t old_fs;30303131 old_fs = enable_sacf_uaccess();3232- pagefault_disable();3332 switch (op) {3433 case FUTEX_OP_SET:3534 __futex_atomic_op("lr %2,%5\n",···5354 default:5455 ret = -ENOSYS;5556 }5656- pagefault_enable();5757 disable_sacf_uaccess(old_fs);58585959 if (!ret)
-4
arch/sh/include/asm/futex.h
···3434 u32 oldval, newval, prev;3535 int ret;36363737- pagefault_disable();3838-3937 do {4038 ret = get_user(oldval, uaddr);4139···64666567 ret = futex_atomic_cmpxchg_inatomic(&prev, uaddr, oldval, newval);6668 } while (!ret && prev != oldval);6767-6868- pagefault_enable();69697070 if (!ret)7171 *oval = oldval;
-4
arch/sparc/include/asm/futex_64.h
···3838 if (unlikely((((unsigned long) uaddr) & 0x3UL)))3939 return -EINVAL;40404141- pagefault_disable();4242-4341 switch (op) {4442 case FUTEX_OP_SET:4543 __futex_cas_op("mov\t%4, %1", ret, oldval, uaddr, oparg);···5759 default:5860 ret = -ENOSYS;5961 }6060-6161- pagefault_enable();62626363 if (!ret)6464 *oval = oldval;