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 <l...@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 <s...@canb.auug.org.au> :::::: CC: Stephen Rothwell <s...@canb.auug.org.au> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
.config.gz
Description: application/gzip