[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