Hi Christophe, Thank you for the patch! Yet something to improve: [auto build test ERROR on linus/master] [also build test ERROR on next-20200403] [cannot apply to powerpc/next drm-intel/for-linux-next tip/x86/core v5.6] [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/Christophe-Leroy/uaccess-Add-user_read_access_begin-end-and-user_write_access_begin-end/20200404-080555 base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 5364abc57993b3bf60c41923cb98a8f1a594e749 config: x86_64-randconfig-s1-20200404 (attached as .config) compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kbuild test robot All errors (new ones prefixed by >>): arch/x86/ia32/ia32_signal.c: In function 'ia32_setup_frame': >> arch/x86/ia32/ia32_signal.c:265:7: error: implicit declaration of function 'user_access_begin'; did you mean 'user_access_end'? [-Werror=implicit-function-declaration] if (!user_access_begin(frame, sizeof(*frame))) ^~~~~~~~~~~~~~~~~ user_access_end cc1: some warnings being treated as errors vim +265 arch/x86/ia32/ia32_signal.c ^1da177e4c3f41 arch/x86_64/ia32/ia32_signal.c Linus Torvalds 2005-04-16 233 235b80226b986d arch/x86/ia32/ia32_signal.c Al Viro 2012-11-09 234 int ia32_setup_frame(int sig, struct ksignal *ksig, ^1da177e4c3f41 arch/x86_64/ia32/ia32_signal.c Linus Torvalds 2005-04-16 235 compat_sigset_t *set, struct pt_regs *regs) ^1da177e4c3f41 arch/x86_64/ia32/ia32_signal.c Linus Torvalds 2005-04-16 236 { 3b0d29ee1c73b6 arch/x86/ia32/ia32_signal.c Hiroshi Shimamoto 2008-12-17 237 struct sigframe_ia32 __user *frame; 99b9cdf758af70 arch/x86/ia32/ia32_signal.c Thomas Gleixner 2008-01-30 238 void __user *restorer; 44a1d996325982 arch/x86/ia32/ia32_signal.c Al Viro 2020-02-15 239 void __user *fp = NULL; ^1da177e4c3f41 arch/x86_64/ia32/ia32_signal.c Linus Torvalds 2005-04-16 240 99b9cdf758af70 arch/x86/ia32/ia32_signal.c Thomas Gleixner 2008-01-30 241 /* copy_to_user optimizes that into a single 8 byte store */ 99b9cdf758af70 arch/x86/ia32/ia32_signal.c Thomas Gleixner 2008-01-30 242 static const struct { 99b9cdf758af70 arch/x86/ia32/ia32_signal.c Thomas Gleixner 2008-01-30 243 u16 poplmovl; 99b9cdf758af70 arch/x86/ia32/ia32_signal.c Thomas Gleixner 2008-01-30 244 u32 val; 99b9cdf758af70 arch/x86/ia32/ia32_signal.c Thomas Gleixner 2008-01-30 245 u16 int80; 99b9cdf758af70 arch/x86/ia32/ia32_signal.c Thomas Gleixner 2008-01-30 246 } __attribute__((packed)) code = { 99b9cdf758af70 arch/x86/ia32/ia32_signal.c Thomas Gleixner 2008-01-30 247 0xb858, /* popl %eax ; movl $...,%eax */ 99b9cdf758af70 arch/x86/ia32/ia32_signal.c Thomas Gleixner 2008-01-30 248 __NR_ia32_sigreturn, 99b9cdf758af70 arch/x86/ia32/ia32_signal.c Thomas Gleixner 2008-01-30 249 0x80cd, /* int $0x80 */ 99b9cdf758af70 arch/x86/ia32/ia32_signal.c Thomas Gleixner 2008-01-30 250 }; 99b9cdf758af70 arch/x86/ia32/ia32_signal.c Thomas Gleixner 2008-01-30 251 44a1d996325982 arch/x86/ia32/ia32_signal.c Al Viro 2020-02-15 252 frame = get_sigframe(ksig, regs, sizeof(*frame), &fp); ^1da177e4c3f41 arch/x86_64/ia32/ia32_signal.c Linus Torvalds 2005-04-16 253 235b80226b986d arch/x86/ia32/ia32_signal.c Al Viro 2012-11-09 254 if (ksig->ka.sa.sa_flags & SA_RESTORER) { 235b80226b986d arch/x86/ia32/ia32_signal.c Al Viro 2012-11-09 255 restorer = ksig->ka.sa.sa_restorer; af65d64845a90c arch/x86/ia32/ia32_signal.c Roland McGrath 2008-01-30 256 } else { ^1da177e4c3f41 arch/x86_64/ia32/ia32_signal.c Linus Torvalds 2005-04-16 257 /* Return stub is in 32bit vsyscall page */ 1a3e4ca41c5a38 arch/x86/ia32/ia32_signal.c Roland McGrath 2008-04-09 258 if (current->mm->context.vdso) 6f121e548f8367 arch/x86/ia32/ia32_signal.c Andy Lutomirski 2014-05-05 259 restorer = current->mm->context.vdso + 0a6d1fa0d2b48f arch/x86/ia32/ia32_signal.c Andy Lutomirski 2015-10-05 260 vdso_image_32.sym___kernel_sigreturn; 9fbbd4dd17d071 arch/x86_64/ia32/ia32_signal.c Andi Kleen 2007-02-13 261 else ade1af77129dea arch/x86/ia32/ia32_signal.c Jan Engelhardt 2008-01-30 262 restorer = &frame->retcode; af65d64845a90c arch/x86/ia32/ia32_signal.c Roland McGrath 2008-01-30 263 } 3b4b75700a245d arch/x86/ia32/ia32_signal.c Hiroshi Shimamoto 2009-01-23 264 e2390741053e49 arch/x86/ia32/ia32_signal.c Al Viro 2020-02-15 @265 if (!user_access_begin(frame, sizeof(*frame))) e2390741053e49 arch/x86/ia32/ia32_signal.c Al Viro 2020-02-15 266 return -EFAULT; 99b9cdf758af70 arch/x86/ia32/ia32_signal.c Thomas Gleixner 2008-01-30 267 e2390741053e49 arch/x86/ia32/ia32_signal.c Al Viro 2020-02-15 268 unsafe_put_user(sig, &frame->sig, Efault); e2390741053e49 arch/x86/ia32/ia32_signal.c Al Viro 2020-02-15 269 unsafe_put_sigcontext32(&frame->sc, fp, regs, set, Efault); e2390741053e49 arch/x86/ia32/ia32_signal.c Al Viro 2020-02-15 270 unsafe_put_user(set->sig[1], &frame->extramask[0], Efault); e2390741053e49 arch/x86/ia32/ia32_signal.c Al Viro 2020-02-15 271 unsafe_put_user(ptr_to_compat(restorer), &frame->pretcode, Efault); 99b9cdf758af70 arch/x86/ia32/ia32_signal.c Thomas Gleixner 2008-01-30 272 /* 99b9cdf758af70 arch/x86/ia32/ia32_signal.c Thomas Gleixner 2008-01-30 273 * These are actually not used anymore, but left because some 99b9cdf758af70 arch/x86/ia32/ia32_signal.c Thomas Gleixner 2008-01-30 274 * gdb versions depend on them as a marker. 99b9cdf758af70 arch/x86/ia32/ia32_signal.c Thomas Gleixner 2008-01-30 275 */ e2390741053e49 arch/x86/ia32/ia32_signal.c Al Viro 2020-02-15 276 unsafe_put_user(*((u64 *)&code), (u64 __user *)frame->retcode, Efault); e2390741053e49 arch/x86/ia32/ia32_signal.c Al Viro 2020-02-15 277 user_access_end(); ^1da177e4c3f41 arch/x86_64/ia32/ia32_signal.c Linus Torvalds 2005-04-16 278 ^1da177e4c3f41 arch/x86_64/ia32/ia32_signal.c Linus Torvalds 2005-04-16 279 /* Set up registers for signal handler */ 65ea5b03499035 arch/x86/ia32/ia32_signal.c H. Peter Anvin 2008-01-30 280 regs->sp = (unsigned long) frame; 235b80226b986d arch/x86/ia32/ia32_signal.c Al Viro 2012-11-09 281 regs->ip = (unsigned long) ksig->ka.sa.sa_handler; ^1da177e4c3f41 arch/x86_64/ia32/ia32_signal.c Linus Torvalds 2005-04-16 282 536e3ee4fed13d arch/x86_64/ia32/ia32_signal.c Andi Kleen 2006-09-26 283 /* Make -mregparm=3 work */ 65ea5b03499035 arch/x86/ia32/ia32_signal.c H. Peter Anvin 2008-01-30 284 regs->ax = sig; 65ea5b03499035 arch/x86/ia32/ia32_signal.c H. Peter Anvin 2008-01-30 285 regs->dx = 0; 65ea5b03499035 arch/x86/ia32/ia32_signal.c H. Peter Anvin 2008-01-30 286 regs->cx = 0; 536e3ee4fed13d arch/x86_64/ia32/ia32_signal.c Andi Kleen 2006-09-26 287 b6edbb1e045a71 arch/x86/ia32/ia32_signal.c Jeremy Fitzhardinge 2008-08-19 288 loadsegment(ds, __USER32_DS); b6edbb1e045a71 arch/x86/ia32/ia32_signal.c Jeremy Fitzhardinge 2008-08-19 289 loadsegment(es, __USER32_DS); ^1da177e4c3f41 arch/x86_64/ia32/ia32_signal.c Linus Torvalds 2005-04-16 290 ^1da177e4c3f41 arch/x86_64/ia32/ia32_signal.c Linus Torvalds 2005-04-16 291 regs->cs = __USER32_CS; ^1da177e4c3f41 arch/x86_64/ia32/ia32_signal.c Linus Torvalds 2005-04-16 292 regs->ss = __USER32_DS; ^1da177e4c3f41 arch/x86_64/ia32/ia32_signal.c Linus Torvalds 2005-04-16 293 1d001df19d5323 arch/x86_64/ia32/ia32_signal.c Andi Kleen 2006-09-26 294 return 0; 44a1d996325982 arch/x86/ia32/ia32_signal.c Al Viro 2020-02-15 295 Efault: 44a1d996325982 arch/x86/ia32/ia32_signal.c Al Viro 2020-02-15 296 user_access_end(); 44a1d996325982 arch/x86/ia32/ia32_signal.c Al Viro 2020-02-15 297 return -EFAULT; ^1da177e4c3f41 arch/x86_64/ia32/ia32_signal.c Linus Torvalds 2005-04-16 298 } ^1da177e4c3f41 arch/x86_64/ia32/ia32_signal.c Linus Torvalds 2005-04-16 299 :::::: The code at line 265 was first introduced by commit :::::: e2390741053e4931841650b5eadac32697aa88aa x86: ia32_setup_frame(): consolidate uaccess areas :::::: TO: Al Viro :::::: CC: Al Viro --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org