[PATCH v2 4/4] powerpc/uaccess: add more __builtin_expect annotations
kbuild test robot
lkp at intel.com
Sun Apr 5 01:56:59 AEDT 2020
Hi Nicholas,
I love your patch! Perhaps something to improve:
[auto build test WARNING on powerpc/next]
[also build test WARNING on v5.6 next-20200404]
[cannot apply to scottwood/next]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Nicholas-Piggin/powerpc-64s-implement-probe_kernel_read-write-without-touching-AMR/20200404-192647
base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next
config: powerpc-rhel-kconfig (attached as .config)
compiler: powerpc64le-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=9.3.0 make.cross ARCH=powerpc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp at intel.com>
All warnings (new ones prefixed by >>):
In file included from include/linux/uaccess.h:11,
from arch/powerpc/include/asm/sections.h:7,
from include/linux/interrupt.h:20,
from include/linux/serial_core.h:13,
from drivers/of/fdt.c:25:
include/asm-generic/termios-base.h: In function 'user_termio_to_kernel_termios':
arch/powerpc/include/asm/uaccess.h:328:2: warning: statement with no effect [-Wunused-value]
328 | __gu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:89:2: note: in expansion of macro '__get_user_check'
89 | __get_user_check((x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
>> include/asm-generic/termios-base.h:20:6: note: in expansion of macro 'get_user'
20 | if (get_user(tmp, &termio->c_iflag) < 0)
| ^~~~~~~~
arch/powerpc/include/asm/uaccess.h:328:2: warning: statement with no effect [-Wunused-value]
328 | __gu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:89:2: note: in expansion of macro '__get_user_check'
89 | __get_user_check((x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
include/asm-generic/termios-base.h:24:6: note: in expansion of macro 'get_user'
24 | if (get_user(tmp, &termio->c_oflag) < 0)
| ^~~~~~~~
arch/powerpc/include/asm/uaccess.h:328:2: warning: statement with no effect [-Wunused-value]
328 | __gu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:89:2: note: in expansion of macro '__get_user_check'
89 | __get_user_check((x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
include/asm-generic/termios-base.h:28:6: note: in expansion of macro 'get_user'
28 | if (get_user(tmp, &termio->c_cflag) < 0)
| ^~~~~~~~
arch/powerpc/include/asm/uaccess.h:328:2: warning: statement with no effect [-Wunused-value]
328 | __gu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:89:2: note: in expansion of macro '__get_user_check'
89 | __get_user_check((x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
include/asm-generic/termios-base.h:32:6: note: in expansion of macro 'get_user'
32 | if (get_user(tmp, &termio->c_lflag) < 0)
| ^~~~~~~~
arch/powerpc/include/asm/uaccess.h:328:2: warning: statement with no effect [-Wunused-value]
328 | __gu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:89:2: note: in expansion of macro '__get_user_check'
89 | __get_user_check((x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
include/asm-generic/termios-base.h:36:6: note: in expansion of macro 'get_user'
36 | if (get_user(termios->c_line, &termio->c_line) < 0)
| ^~~~~~~~
include/asm-generic/termios-base.h: In function 'kernel_termios_to_user_termio':
arch/powerpc/include/asm/uaccess.h:194:2: warning: statement with no effect [-Wunused-value]
194 | __pu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:91:2: note: in expansion of macro '__put_user_check'
91 | __put_user_check((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
>> include/asm-generic/termios-base.h:54:6: note: in expansion of macro 'put_user'
54 | if (put_user(termios->c_iflag, &termio->c_iflag) < 0 ||
| ^~~~~~~~
arch/powerpc/include/asm/uaccess.h:194:2: warning: statement with no effect [-Wunused-value]
194 | __pu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:91:2: note: in expansion of macro '__put_user_check'
91 | __put_user_check((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
include/asm-generic/termios-base.h:55:6: note: in expansion of macro 'put_user'
55 | put_user(termios->c_oflag, &termio->c_oflag) < 0 ||
| ^~~~~~~~
arch/powerpc/include/asm/uaccess.h:194:2: warning: statement with no effect [-Wunused-value]
194 | __pu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:91:2: note: in expansion of macro '__put_user_check'
91 | __put_user_check((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
include/asm-generic/termios-base.h:56:6: note: in expansion of macro 'put_user'
56 | put_user(termios->c_cflag, &termio->c_cflag) < 0 ||
| ^~~~~~~~
arch/powerpc/include/asm/uaccess.h:194:2: warning: statement with no effect [-Wunused-value]
194 | __pu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:91:2: note: in expansion of macro '__put_user_check'
91 | __put_user_check((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
include/asm-generic/termios-base.h:57:6: note: in expansion of macro 'put_user'
57 | put_user(termios->c_lflag, &termio->c_lflag) < 0 ||
| ^~~~~~~~
arch/powerpc/include/asm/uaccess.h:194:2: warning: statement with no effect [-Wunused-value]
194 | __pu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:91:2: note: in expansion of macro '__put_user_check'
91 | __put_user_check((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
include/asm-generic/termios-base.h:58:6: note: in expansion of macro 'put_user'
58 | put_user(termios->c_line, &termio->c_line) < 0 ||
| ^~~~~~~~
--
In file included from include/linux/uaccess.h:11,
from include/linux/sched/task.h:11,
from include/linux/sched/signal.h:9,
from include/linux/ptrace.h:7,
from arch/powerpc/kernel/signal_32.c:23:
arch/powerpc/kernel/signal_32.c: In function 'handle_rt_signal32':
arch/powerpc/include/asm/uaccess.h:194:2: warning: statement with no effect [-Wunused-value]
194 | __pu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:91:2: note: in expansion of macro '__put_user_check'
91 | __put_user_check((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
>> arch/powerpc/kernel/signal_32.c:967:6: note: in expansion of macro 'put_user'
967 | if (put_user(regs->gpr[1], (u32 __user *)newsp))
| ^~~~~~~~
arch/powerpc/kernel/signal_32.c: In function 'handle_signal32':
arch/powerpc/include/asm/uaccess.h:194:2: warning: statement with no effect [-Wunused-value]
194 | __pu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:91:2: note: in expansion of macro '__put_user_check'
91 | __put_user_check((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
arch/powerpc/kernel/signal_32.c:1423:6: note: in expansion of macro 'put_user'
1423 | if (put_user(regs->gpr[1], (u32 __user *)newsp))
| ^~~~~~~~
--
In file included from include/linux/uaccess.h:11,
from include/linux/sched/task.h:11,
from arch/powerpc/kernel/process.c:16:
arch/powerpc/kernel/process.c: In function 'get_fpexc_mode':
arch/powerpc/include/asm/uaccess.h:194:2: warning: statement with no effect [-Wunused-value]
194 | __pu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:91:2: note: in expansion of macro '__put_user_check'
91 | __put_user_check((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
>> arch/powerpc/kernel/process.c:1909:9: note: in expansion of macro 'put_user'
1909 | return put_user(val, (unsigned int __user *) adr);
| ^~~~~~~~
arch/powerpc/kernel/process.c: In function 'get_endian':
arch/powerpc/include/asm/uaccess.h:194:2: warning: statement with no effect [-Wunused-value]
194 | __pu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:91:2: note: in expansion of macro '__put_user_check'
91 | __put_user_check((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
arch/powerpc/kernel/process.c:1953:9: note: in expansion of macro 'put_user'
1953 | return put_user(val, (unsigned int __user *)adr);
| ^~~~~~~~
arch/powerpc/kernel/process.c: In function 'get_unalign_ctl':
arch/powerpc/include/asm/uaccess.h:194:2: warning: statement with no effect [-Wunused-value]
194 | __pu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:91:2: note: in expansion of macro '__put_user_check'
91 | __put_user_check((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
arch/powerpc/kernel/process.c:1964:9: note: in expansion of macro 'put_user'
1964 | return put_user(tsk->thread.align_ctl, (unsigned int __user *)adr);
| ^~~~~~~~
--
In file included from include/linux/uaccess.h:11,
from include/linux/sched/task.h:11,
from include/linux/sched/signal.h:9,
from include/linux/ptrace.h:7,
from arch/powerpc/kernel/traps.c:22:
arch/powerpc/kernel/traps.c: In function 'emulate_string_inst':
arch/powerpc/include/asm/uaccess.h:328:2: warning: statement with no effect [-Wunused-value]
328 | __gu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:89:2: note: in expansion of macro '__get_user_check'
89 | __get_user_check((x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
>> arch/powerpc/kernel/traps.c:1243:9: note: in expansion of macro 'get_user'
1243 | if (get_user(val, (u8 __user *)EA))
| ^~~~~~~~
arch/powerpc/include/asm/uaccess.h:194:2: warning: statement with no effect [-Wunused-value]
194 | __pu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:91:2: note: in expansion of macro '__put_user_check'
91 | __put_user_check((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
>> arch/powerpc/kernel/traps.c:1254:9: note: in expansion of macro 'put_user'
1254 | if (put_user(val, (u8 __user *)EA))
| ^~~~~~~~
arch/powerpc/kernel/traps.c: In function 'emulate_instruction':
arch/powerpc/include/asm/uaccess.h:328:2: warning: statement with no effect [-Wunused-value]
328 | __gu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:89:2: note: in expansion of macro '__get_user_check'
89 | __get_user_check((x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
arch/powerpc/kernel/traps.c:1338:6: note: in expansion of macro 'get_user'
1338 | if (get_user(instword, (u32 __user *)(regs->nip)))
| ^~~~~~~~
arch/powerpc/kernel/traps.c: In function 'facility_unavailable_exception':
arch/powerpc/include/asm/uaccess.h:328:2: warning: statement with no effect [-Wunused-value]
328 | __gu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:89:2: note: in expansion of macro '__get_user_check'
89 | __get_user_check((x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
arch/powerpc/kernel/traps.c:1770:7: note: in expansion of macro 'get_user'
1770 | if (get_user(instword, (u32 __user *)(regs->nip))) {
| ^~~~~~~~
--
In file included from include/linux/uaccess.h:11,
from include/linux/sched/task.h:11,
from include/linux/sched/signal.h:9,
from include/linux/ptrace.h:7,
from arch/powerpc/kernel/signal_64.c:21:
arch/powerpc/kernel/signal_64.c: In function '__do_sys_swapcontext':
arch/powerpc/include/asm/uaccess.h:328:2: warning: statement with no effect [-Wunused-value]
328 | __gu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:89:2: note: in expansion of macro '__get_user_check'
89 | __get_user_check((x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
>> arch/powerpc/kernel/signal_64.c:644:6: note: in expansion of macro 'get_user'
644 | get_user(new_msr, &new_ctx->uc_mcontext.gp_regs[PT_MSR]))
| ^~~~~~~~
arch/powerpc/kernel/signal_64.c: In function 'handle_rt_signal64':
arch/powerpc/include/asm/uaccess.h:194:2: warning: statement with no effect [-Wunused-value]
194 | __pu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:91:2: note: in expansion of macro '__put_user_check'
91 | __put_user_check((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
>> arch/powerpc/kernel/signal_64.c:880:9: note: in expansion of macro 'put_user'
880 | err |= put_user(regs->gpr[1], (unsigned long __user *)newsp);
| ^~~~~~~~
arch/powerpc/include/asm/uaccess.h:328:2: warning: statement with no effect [-Wunused-value]
328 | __gu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:89:2: note: in expansion of macro '__get_user_check'
89 | __get_user_check((x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
arch/powerpc/kernel/signal_64.c:895:10: note: in expansion of macro 'get_user'
895 | err |= get_user(regs->nip, &funct_desc_ptr->entry);
| ^~~~~~~~
arch/powerpc/include/asm/uaccess.h:328:2: warning: statement with no effect [-Wunused-value]
328 | __gu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:89:2: note: in expansion of macro '__get_user_check'
89 | __get_user_check((x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
arch/powerpc/kernel/signal_64.c:896:10: note: in expansion of macro 'get_user'
896 | err |= get_user(regs->gpr[2], &funct_desc_ptr->toc);
| ^~~~~~~~
arch/powerpc/include/asm/uaccess.h:328:2: warning: statement with no effect [-Wunused-value]
328 | __gu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:89:2: note: in expansion of macro '__get_user_check'
89 | __get_user_check((x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
arch/powerpc/kernel/signal_64.c:906:10: note: in expansion of macro 'get_user'
906 | err |= get_user(regs->gpr[4], (unsigned long __user *)&frame->pinfo);
| ^~~~~~~~
arch/powerpc/include/asm/uaccess.h:328:2: warning: statement with no effect [-Wunused-value]
328 | __gu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:89:2: note: in expansion of macro '__get_user_check'
89 | __get_user_check((x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
arch/powerpc/kernel/signal_64.c:907:10: note: in expansion of macro 'get_user'
907 | err |= get_user(regs->gpr[5], (unsigned long __user *)&frame->puc);
| ^~~~~~~~
--
In file included from include/linux/uaccess.h:11,
from arch/powerpc/kernel/vecemu.c:12:
arch/powerpc/kernel/vecemu.c: In function 'emulate_altivec':
arch/powerpc/include/asm/uaccess.h:328:2: warning: statement with no effect [-Wunused-value]
328 | __gu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:89:2: note: in expansion of macro '__get_user_check'
89 | __get_user_check((x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
>> arch/powerpc/kernel/vecemu.c:267:6: note: in expansion of macro 'get_user'
267 | if (get_user(instr, (unsigned int __user *) regs->nip))
| ^~~~~~~~
--
In file included from include/linux/uaccess.h:11,
from arch/powerpc/include/asm/sections.h:7,
from include/linux/interrupt.h:20,
from arch/powerpc/include/asm/kvm_host.h:14,
from include/linux/kvm_host.h:36,
from arch/powerpc/kvm/../../../virt/kvm/vfio.c:11:
arch/powerpc/kvm/../../../virt/kvm/vfio.c: In function 'kvm_vfio_set_group':
arch/powerpc/include/asm/uaccess.h:328:2: warning: statement with no effect [-Wunused-value]
328 | __gu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:89:2: note: in expansion of macro '__get_user_check'
89 | __get_user_check((x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
>> arch/powerpc/kvm/../../../virt/kvm/vfio.c:196:7: note: in expansion of macro 'get_user'
196 | if (get_user(fd, argp))
| ^~~~~~~~
arch/powerpc/include/asm/uaccess.h:328:2: warning: statement with no effect [-Wunused-value]
328 | __gu_err; \
| ^~~~~~~~
>> arch/powerpc/include/asm/uaccess.h:89:2: note: in expansion of macro '__get_user_check'
89 | __get_user_check((x), (ptr), sizeof(*(ptr)))
| ^~~~~~~~~~~~~~~~
arch/powerpc/kvm/../../../virt/kvm/vfio.c:240:7: note: in expansion of macro 'get_user'
240 | if (get_user(fd, argp))
| ^~~~~~~~
..
vim +/__get_user_check +89 arch/powerpc/include/asm/uaccess.h
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 64
96d4f267e40f95 arch/powerpc/include/asm/uaccess.h Linus Torvalds 2019-01-03 65 #define access_ok(addr, size) \
4caf4ebfe4cf0e arch/powerpc/include/asm/uaccess.h Linus Torvalds 2019-01-04 66 (__chk_user_ptr(addr), \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 67 __access_ok((__force unsigned long)(addr), (size), get_fs()))
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 68
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 69 /*
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 70 * These are the main single-value transfer routines. They automatically
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 71 * use the right size if we just have the right pointer type.
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 72 *
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 73 * This gets kind of ugly. We want to return _two_ values in "get_user()"
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 74 * and yet we don't want to do any pointers, because that is too much
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 75 * of a performance impact. Thus we have a few rather ugly macros here,
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 76 * and hide all the ugliness from the user.
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 77 *
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 78 * The "__xxx" versions of the user access functions are versions that
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 79 * do not verify the address space, that must have been done previously
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 80 * with a separate "access_ok()" call (this is used when we do multiple
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 81 * accesses to the same area of user memory).
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 82 *
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 83 * As we use the same address space for kernel and user data on the
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 84 * PowerPC, we can just do these as direct assignments. (Of course, the
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 85 * exception handling means that it's no longer "just"...)
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 86 *
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 87 */
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 88 #define get_user(x, ptr) \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 @89 __get_user_check((x), (ptr), sizeof(*(ptr)))
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 90 #define put_user(x, ptr) \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 @91 __put_user_check((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 92
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 93 #define __get_user(x, ptr) \
5cd623333e7cf4 arch/powerpc/include/asm/uaccess.h Christophe Leroy 2020-01-24 94 __get_user_nocheck((x), (ptr), sizeof(*(ptr)), true)
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 95 #define __put_user(x, ptr) \
5cd623333e7cf4 arch/powerpc/include/asm/uaccess.h Christophe Leroy 2020-01-24 96 __put_user_nocheck((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)), true)
5cd623333e7cf4 arch/powerpc/include/asm/uaccess.h Christophe Leroy 2020-01-24 97
5cd623333e7cf4 arch/powerpc/include/asm/uaccess.h Christophe Leroy 2020-01-24 98 #define __get_user_allowed(x, ptr) \
5cd623333e7cf4 arch/powerpc/include/asm/uaccess.h Christophe Leroy 2020-01-24 99 __get_user_nocheck((x), (ptr), sizeof(*(ptr)), false)
5cd623333e7cf4 arch/powerpc/include/asm/uaccess.h Christophe Leroy 2020-01-24 100 #define __put_user_allowed(x, ptr) \
5cd623333e7cf4 arch/powerpc/include/asm/uaccess.h Christophe Leroy 2020-01-24 101 __put_user_nocheck((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)), false)
e68c825bb01670 include/asm-powerpc/uaccess.h Benjamin Herrenschmidt 2007-04-11 102
e68c825bb01670 include/asm-powerpc/uaccess.h Benjamin Herrenschmidt 2007-04-11 103 #define __get_user_inatomic(x, ptr) \
e68c825bb01670 include/asm-powerpc/uaccess.h Benjamin Herrenschmidt 2007-04-11 104 __get_user_nosleep((x), (ptr), sizeof(*(ptr)))
e68c825bb01670 include/asm-powerpc/uaccess.h Benjamin Herrenschmidt 2007-04-11 105 #define __put_user_inatomic(x, ptr) \
e68c825bb01670 include/asm-powerpc/uaccess.h Benjamin Herrenschmidt 2007-04-11 106 __put_user_nosleep((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
e68c825bb01670 include/asm-powerpc/uaccess.h Benjamin Herrenschmidt 2007-04-11 107
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 108 extern long __put_user_bad(void);
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 109
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 110 /*
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 111 * We don't tell gcc that we are accessing memory, but this is OK
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 112 * because we do not write to any memory gcc knows about, so there
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 113 * are no aliasing issues.
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 114 */
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 115 #define __put_user_asm(x, addr, err, op) \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 116 __asm__ __volatile__( \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 117 "1: " op " %1,0(%2) # put_user\n" \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 118 "2:\n" \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 119 ".section .fixup,\"ax\"\n" \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 120 "3: li %0,%3\n" \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 121 " b 2b\n" \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 122 ".previous\n" \
24bfa6a9e0d4fe arch/powerpc/include/asm/uaccess.h Nicholas Piggin 2016-10-13 123 EX_TABLE(1b, 3b) \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 124 : "=r" (err) \
551c3c04b478b9 include/asm-powerpc/uaccess.h Michael Ellerman 2008-07-17 125 : "r" (x), "b" (addr), "i" (-EFAULT), "0" (err))
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 126
5015b49448cbe5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-31 127 #ifdef __powerpc64__
5015b49448cbe5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-31 128 #define __put_user_asm2(x, ptr, retval) \
5015b49448cbe5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-31 129 __put_user_asm(x, ptr, retval, "std")
5015b49448cbe5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-31 130 #else /* __powerpc64__ */
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 131 #define __put_user_asm2(x, addr, err) \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 132 __asm__ __volatile__( \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 133 "1: stw %1,0(%2)\n" \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 134 "2: stw %1+1,4(%2)\n" \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 135 "3:\n" \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 136 ".section .fixup,\"ax\"\n" \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 137 "4: li %0,%3\n" \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 138 " b 3b\n" \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 139 ".previous\n" \
24bfa6a9e0d4fe arch/powerpc/include/asm/uaccess.h Nicholas Piggin 2016-10-13 140 EX_TABLE(1b, 4b) \
24bfa6a9e0d4fe arch/powerpc/include/asm/uaccess.h Nicholas Piggin 2016-10-13 141 EX_TABLE(2b, 4b) \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 142 : "=r" (err) \
551c3c04b478b9 include/asm-powerpc/uaccess.h Michael Ellerman 2008-07-17 143 : "r" (x), "b" (addr), "i" (-EFAULT), "0" (err))
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 144 #endif /* __powerpc64__ */
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 145
5cd623333e7cf4 arch/powerpc/include/asm/uaccess.h Christophe Leroy 2020-01-24 146 #define __put_user_size_allowed(x, ptr, size, retval) \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 147 do { \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 148 retval = 0; \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 149 switch (size) { \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 150 case 1: __put_user_asm(x, ptr, retval, "stb"); break; \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 151 case 2: __put_user_asm(x, ptr, retval, "sth"); break; \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 152 case 4: __put_user_asm(x, ptr, retval, "stw"); break; \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 153 case 8: __put_user_asm2(x, ptr, retval); break; \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 154 default: __put_user_bad(); \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 155 } \
5cd623333e7cf4 arch/powerpc/include/asm/uaccess.h Christophe Leroy 2020-01-24 156 } while (0)
5cd623333e7cf4 arch/powerpc/include/asm/uaccess.h Christophe Leroy 2020-01-24 157
5cd623333e7cf4 arch/powerpc/include/asm/uaccess.h Christophe Leroy 2020-01-24 158 #define __put_user_size(x, ptr, size, retval) \
5cd623333e7cf4 arch/powerpc/include/asm/uaccess.h Christophe Leroy 2020-01-24 159 do { \
5cd623333e7cf4 arch/powerpc/include/asm/uaccess.h Christophe Leroy 2020-01-24 160 allow_write_to_user(ptr, size); \
5cd623333e7cf4 arch/powerpc/include/asm/uaccess.h Christophe Leroy 2020-01-24 161 __put_user_size_allowed(x, ptr, size, retval); \
de78a9c42a7900 arch/powerpc/include/asm/uaccess.h Christophe Leroy 2019-04-18 162 prevent_write_to_user(ptr, size); \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 163 } while (0)
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 164
5cd623333e7cf4 arch/powerpc/include/asm/uaccess.h Christophe Leroy 2020-01-24 165 #define __put_user_nocheck(x, ptr, size, do_allow) \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 166 ({ \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 167 long __pu_err; \
6bfd93c32a5065 include/asm-powerpc/uaccess.h Paul Mackerras 2006-05-03 168 __typeof__(*(ptr)) __user *__pu_addr = (ptr); \
fea87fb7a00046 arch/powerpc/include/asm/uaccess.h Nicholas Piggin 2020-04-03 169 __typeof__(*(ptr)) __pu_val = (x); \
fea87fb7a00046 arch/powerpc/include/asm/uaccess.h Nicholas Piggin 2020-04-03 170 __typeof__(size) __pu_size = (size); \
fea87fb7a00046 arch/powerpc/include/asm/uaccess.h Nicholas Piggin 2020-04-03 171 \
6bfd93c32a5065 include/asm-powerpc/uaccess.h Paul Mackerras 2006-05-03 172 if (!is_kernel_addr((unsigned long)__pu_addr)) \
1af1717dbf96eb arch/powerpc/include/asm/uaccess.h Michael S. Tsirkin 2013-05-26 173 might_fault(); \
fea87fb7a00046 arch/powerpc/include/asm/uaccess.h Nicholas Piggin 2020-04-03 174 __chk_user_ptr(__pu_addr); \
5cd623333e7cf4 arch/powerpc/include/asm/uaccess.h Christophe Leroy 2020-01-24 175 if (do_allow) \
fea87fb7a00046 arch/powerpc/include/asm/uaccess.h Nicholas Piggin 2020-04-03 176 __put_user_size(__pu_val, __pu_addr, __pu_size, __pu_err); \
5cd623333e7cf4 arch/powerpc/include/asm/uaccess.h Christophe Leroy 2020-01-24 177 else \
fea87fb7a00046 arch/powerpc/include/asm/uaccess.h Nicholas Piggin 2020-04-03 178 __put_user_size_allowed(__pu_val, __pu_addr, __pu_size, __pu_err); \
fea87fb7a00046 arch/powerpc/include/asm/uaccess.h Nicholas Piggin 2020-04-03 179 \
958106a072021d arch/powerpc/include/asm/uaccess.h Nicholas Piggin 2020-04-03 180 __builtin_expect(__pu_err, 0); \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 181 })
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 182
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 183 #define __put_user_check(x, ptr, size) \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 184 ({ \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 185 long __pu_err = -EFAULT; \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 186 __typeof__(*(ptr)) __user *__pu_addr = (ptr); \
fea87fb7a00046 arch/powerpc/include/asm/uaccess.h Nicholas Piggin 2020-04-03 187 __typeof__(*(ptr)) __pu_val = (x); \
fea87fb7a00046 arch/powerpc/include/asm/uaccess.h Nicholas Piggin 2020-04-03 188 __typeof__(size) __pu_size = (size); \
fea87fb7a00046 arch/powerpc/include/asm/uaccess.h Nicholas Piggin 2020-04-03 189 \
1af1717dbf96eb arch/powerpc/include/asm/uaccess.h Michael S. Tsirkin 2013-05-26 190 might_fault(); \
fea87fb7a00046 arch/powerpc/include/asm/uaccess.h Nicholas Piggin 2020-04-03 191 if (access_ok(__pu_addr, __pu_size)) \
fea87fb7a00046 arch/powerpc/include/asm/uaccess.h Nicholas Piggin 2020-04-03 192 __put_user_size(__pu_val, __pu_addr, __pu_size, __pu_err); \
fea87fb7a00046 arch/powerpc/include/asm/uaccess.h Nicholas Piggin 2020-04-03 193 \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 @194 __pu_err; \
958106a072021d arch/powerpc/include/asm/uaccess.h Nicholas Piggin 2020-04-03 195 __builtin_expect(__pu_err, 0); \
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 196 })
2df5e8bcca53e5 include/asm-powerpc/uaccess.h Stephen Rothwell 2005-10-29 197
:::::: The code at line 89 was first introduced by commit
:::::: 2df5e8bcca53e528a78ee0e3b114d0d21dd6d043 powerpc: merge uaccess.h
:::::: TO: Stephen Rothwell <sfr at canb.auug.org.au>
:::::: CC: Stephen Rothwell <sfr at canb.auug.org.au>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 15339 bytes
Desc: not available
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20200404/25008a8b/attachment-0001.gz>
More information about the Linuxppc-dev
mailing list