Re: [PATCH 4/4] riscv: uaccess: use 'asm goto output' for get_user

kernel test robot
2024-07-05T04:14:12Z

Hi Jisheng,

kernel test robot noticed the following build errors:

[auto build test ERROR on linus/master]
[also build test ERROR on v6.10-rc6]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Jisheng-Zhang/riscv-implement-user_access_begin-and-families/20240626-005352
base: linus/master
patch link: https://lore.kernel.org/r/20240625040500.1788-5-jszhang%40kernel.org
patch subject: [PATCH 4/4] riscv: uaccess: use 'asm goto output' for get_user
config: riscv-randconfig-r121-20240705 (https://download.01.org/0day-ci/archive/20240705/202407051159.ArkAPA6L-lkp@intel.com/config)
compiler: riscv32-linux-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20240705/202407051159.ArkAPA6L-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202407051159.ArkAPA6L-lkp@intel.com/

All errors (new ones prefixed by >>):

In file included from include/linux/compiler_types.h:174,
from <command-line>:
net/rfkill/core.c: In function 'rfkill_fop_ioctl':
>> arch/riscv/include/asm/uaccess.h:104:26: error: '__lo' undeclared (first use in this function)
104 | : "=&r" (__lo), "=r" (__hi) \
| ^~~~
include/linux/compiler-gcc.h:84:32: note: in definition of macro 'asm_goto_output'
84 | do { asm volatile goto(x); asm (""); } while (0)
| ^
arch/riscv/include/asm/uaccess.h:148:17: note: in expansion of macro '__get_user_8'
148 | __get_user_8((x), __gu_ptr, label); \
| ^~~~~~~~~~~~
arch/riscv/include/asm/uaccess.h:159:9: note: in expansion of macro '__get_user_nocheck'
159 | __get_user_nocheck(x, ptr, __gu_failed); \
| ^~~~~~~~~~~~~~~~~~
arch/riscv/include/asm/uaccess.h:196:9: note: in expansion of macro '__get_user_error'
196 | __get_user_error(__gu_val, __gu_ptr, __gu_err); \
| ^~~~~~~~~~~~~~~~
arch/riscv/include/asm/uaccess.h:226:17: note: in expansion of macro '__get_user'
226 | __get_user((x), __p) : \
| ^~~~~~~~~~
net/rfkill/core.c:1373:21: note: in expansion of macro 'get_user'
1373 | if (get_user(size, (__u32 __user *)arg)) {
| ^~~~~~~~
arch/riscv/include/asm/uaccess.h:104:26: note: each undeclared identifier is reported only once for each function it appears in
104 | : "=&r" (__lo), "=r" (__hi) \
| ^~~~
include/linux/compiler-gcc.h:84:32: note: in definition of macro 'asm_goto_output'
84 | do { asm volatile goto(x); asm (""); } while (0)
| ^
arch/riscv/include/asm/uaccess.h:148:17: note: in expansion of macro '__get_user_8'
148 | __get_user_8((x), __gu_ptr, label); \
| ^~~~~~~~~~~~
arch/riscv/include/asm/uaccess.h:159:9: note: in expansion of macro '__get_user_nocheck'
159 | __get_user_nocheck(x, ptr, __gu_failed); \
| ^~~~~~~~~~~~~~~~~~
arch/riscv/include/asm/uaccess.h:196:9: note: in expansion of macro '__get_user_error'
196 | __get_user_error(__gu_val, __gu_ptr, __gu_err); \
| ^~~~~~~~~~~~~~~~
arch/riscv/include/asm/uaccess.h:226:17: note: in expansion of macro '__get_user'
226 | __get_user((x), __p) : \
| ^~~~~~~~~~
net/rfkill/core.c:1373:21: note: in expansion of macro 'get_user'
1373 | if (get_user(size, (__u32 __user *)arg)) {
| ^~~~~~~~
>> arch/riscv/include/asm/uaccess.h:104:39: error: '__hi' undeclared (first use in this function)
104 | : "=&r" (__lo), "=r" (__hi) \
| ^~~~
include/linux/compiler-gcc.h:84:32: note: in definition of macro 'asm_goto_output'
84 | do { asm volatile goto(x); asm (""); } while (0)
| ^
arch/riscv/include/asm/uaccess.h:148:17: note: in expansion of macro '__get_user_8'
148 | __get_user_8((x), __gu_ptr, label); \
| ^~~~~~~~~~~~
arch/riscv/include/asm/uaccess.h:159:9: note: in expansion of macro '__get_user_nocheck'
159 | __get_user_nocheck(x, ptr, __gu_failed); \
| ^~~~~~~~~~~~~~~~~~
arch/riscv/include/asm/uaccess.h:196:9: note: in expansion of macro '__get_user_error'
196 | __get_user_error(__gu_val, __gu_ptr, __gu_err); \
| ^~~~~~~~~~~~~~~~
arch/riscv/include/asm/uaccess.h:226:17: note: in expansion of macro '__get_user'
226 | __get_user((x), __p) : \
| ^~~~~~~~~~
net/rfkill/core.c:1373:21: note: in expansion of macro 'get_user'
1373 | if (get_user(size, (__u32 __user *)arg)) {
| ^~~~~~~~
>> arch/riscv/include/asm/uaccess.h:105:24: error: '__ptr' undeclared (first use in this function); did you mean '__p'?
105 | : "m" (__ptr[__LSW]), "m" (__ptr[__MSW]) \
| ^~~~~
include/linux/compiler-gcc.h:84:32: note: in definition of macro 'asm_goto_output'
84 | do { asm volatile goto(x); asm (""); } while (0)
| ^
arch/riscv/include/asm/uaccess.h:148:17: note: in expansion of macro '__get_user_8'
148 | __get_user_8((x), __gu_ptr, label); \
| ^~~~~~~~~~~~
arch/riscv/include/asm/uaccess.h:159:9: note: in expansion of macro '__get_user_nocheck'
159 | __get_user_nocheck(x, ptr, __gu_failed); \
| ^~~~~~~~~~~~~~~~~~
arch/riscv/include/asm/uaccess.h:196:9: note: in expansion of macro '__get_user_error'
196 | __get_user_error(__gu_val, __gu_ptr, __gu_err); \
| ^~~~~~~~~~~~~~~~
arch/riscv/include/asm/uaccess.h:226:17: note: in expansion of macro '__get_user'
226 | __get_user((x), __p) : \
| ^~~~~~~~~~
net/rfkill/core.c:1373:21: note: in expansion of macro 'get_user'
1373 | if (get_user(size, (__u32 __user *)arg)) {
| ^~~~~~~~

vim +/__lo +104 arch/riscv/include/asm/uaccess.h

94
95 #ifdef CONFIG_CC_HAS_ASM_GOTO_OUTPUT
96 #define __get_user_8(x, ptr, label) \
97 asm_goto_output( \
98 "1:\n" \
99 " lw %0, %2\n" \
100 "2:\n" \
101 " lw %1, %3\n" \
102 _ASM_EXTABLE_UACCESS_ERR(1b, %l4, %0) \
103 _ASM_EXTABLE_UACCESS_ERR(2b, %l4, %0) \
> 104 : "=&r" (__lo), "=r" (__hi) \
> 105 : "m" (__ptr[__LSW]), "m" (__ptr[__MSW]) \
106 : : label)
107

--
0-DAY CI Kernel Test Service