tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: f09079bd04a924c72d555cd97942d5f8d7eca98c commit: f6bff7827a48e59cff1ef98aae72452d65174e0c riscv: uaccess: use 'asm_goto_output' for get_user() date: 5 weeks ago config: riscv-randconfig-002-20250611 compiler: clang version 19.1.7 (https://github.com/llvm/llvm-project cd708029e0b2869e80abe31ddb175f7c35361f90) reproduce (this is a W=1 build): 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 | Closes: https://lore.kernel.org/oe-kbuild-all/202506110256.SKiha1MS-lkp@intel.com/ All warnings (new ones prefixed by >>): In file included from kernel/trace/trace_events_user.c:10: In file included from include/linux/cdev.h:8: In file included from include/linux/device.h:32: In file included from include/linux/device/driver.h:21: In file included from include/linux/module.h:19: In file included from include/linux/elf.h:6: In file included from arch/riscv/include/asm/elf.h:12: In file included from include/linux/compat.h:17: include/linux/fs.h:3921:15: warning: label followed by a declaration is a C23 extension [-Wc23-extensions] 3921 | if (unlikely(get_user(c, path))) | ^ arch/riscv/include/asm/uaccess.h:263:3: note: expanded from macro 'get_user' 263 | __get_user((x), __p) : \ | ^ arch/riscv/include/asm/uaccess.h:233:2: note: expanded from macro '__get_user' 233 | __get_user_error(__gu_val, __gu_ptr, __gu_err); \ | ^ arch/riscv/include/asm/uaccess.h:196:2: note: expanded from macro '__get_user_error' 196 | __get_user_nocheck(x, ptr, __gu_failed); \ | ^ arch/riscv/include/asm/uaccess.h:185:3: note: expanded from macro '__get_user_nocheck' 185 | __get_user_8((x), __gu_ptr, label); \ | ^ arch/riscv/include/asm/uaccess.h:130:2: note: expanded from macro '__get_user_8' 130 | u32 __user *__ptr = (u32 __user *)(ptr); \ | ^ >> kernel/trace/trace_events_user.c:2404:8: warning: label followed by a declaration is a C23 extension [-Wc23-extensions] 2404 | ret = get_user(size, &ureg->size); | ^ arch/riscv/include/asm/uaccess.h:263:3: note: expanded from macro 'get_user' 263 | __get_user((x), __p) : \ | ^ arch/riscv/include/asm/uaccess.h:233:2: note: expanded from macro '__get_user' 233 | __get_user_error(__gu_val, __gu_ptr, __gu_err); \ | ^ arch/riscv/include/asm/uaccess.h:196:2: note: expanded from macro '__get_user_error' 196 | __get_user_nocheck(x, ptr, __gu_failed); \ | ^ arch/riscv/include/asm/uaccess.h:185:3: note: expanded from macro '__get_user_nocheck' 185 | __get_user_8((x), __gu_ptr, label); \ | ^ arch/riscv/include/asm/uaccess.h:130:2: note: expanded from macro '__get_user_8' 130 | u32 __user *__ptr = (u32 __user *)(ptr); \ | ^ kernel/trace/trace_events_user.c:2566:8: warning: label followed by a declaration is a C23 extension [-Wc23-extensions] 2566 | ret = get_user(size, &ureg->size); | ^ arch/riscv/include/asm/uaccess.h:263:3: note: expanded from macro 'get_user' 263 | __get_user((x), __p) : \ | ^ arch/riscv/include/asm/uaccess.h:233:2: note: expanded from macro '__get_user' 233 | __get_user_error(__gu_val, __gu_ptr, __gu_err); \ | ^ arch/riscv/include/asm/uaccess.h:196:2: note: expanded from macro '__get_user_error' 196 | __get_user_nocheck(x, ptr, __gu_failed); \ | ^ arch/riscv/include/asm/uaccess.h:185:3: note: expanded from macro '__get_user_nocheck' 185 | __get_user_8((x), __gu_ptr, label); \ | ^ arch/riscv/include/asm/uaccess.h:130:2: note: expanded from macro '__get_user_8' 130 | u32 __user *__ptr = (u32 __user *)(ptr); \ | ^ 3 warnings generated. vim +2404 kernel/trace/trace_events_user.c 7f5a08c79df35e Beau Belgrave 2022-01-18 2398 7f5a08c79df35e Beau Belgrave 2022-01-18 2399 static long user_reg_get(struct user_reg __user *ureg, struct user_reg *kreg) 7f5a08c79df35e Beau Belgrave 2022-01-18 2400 { 7f5a08c79df35e Beau Belgrave 2022-01-18 2401 u32 size; 7f5a08c79df35e Beau Belgrave 2022-01-18 2402 long ret; 7f5a08c79df35e Beau Belgrave 2022-01-18 2403 7f5a08c79df35e Beau Belgrave 2022-01-18 @2404 ret = get_user(size, &ureg->size); 7f5a08c79df35e Beau Belgrave 2022-01-18 2405 7f5a08c79df35e Beau Belgrave 2022-01-18 2406 if (ret) 7f5a08c79df35e Beau Belgrave 2022-01-18 2407 return ret; 7f5a08c79df35e Beau Belgrave 2022-01-18 2408 7f5a08c79df35e Beau Belgrave 2022-01-18 2409 if (size > PAGE_SIZE) 7f5a08c79df35e Beau Belgrave 2022-01-18 2410 return -E2BIG; 7f5a08c79df35e Beau Belgrave 2022-01-18 2411 39d6d08b2edf99 Beau Belgrave 2022-07-28 2412 if (size < offsetofend(struct user_reg, write_index)) 39d6d08b2edf99 Beau Belgrave 2022-07-28 2413 return -EINVAL; 39d6d08b2edf99 Beau Belgrave 2022-07-28 2414 39d6d08b2edf99 Beau Belgrave 2022-07-28 2415 ret = copy_struct_from_user(kreg, sizeof(*kreg), ureg, size); 39d6d08b2edf99 Beau Belgrave 2022-07-28 2416 39d6d08b2edf99 Beau Belgrave 2022-07-28 2417 if (ret) 39d6d08b2edf99 Beau Belgrave 2022-07-28 2418 return ret; 39d6d08b2edf99 Beau Belgrave 2022-07-28 2419 a65442edb47a6d Beau Belgrave 2023-06-14 2420 /* Ensure only valid flags */ a65442edb47a6d Beau Belgrave 2023-06-14 2421 if (kreg->flags & ~(USER_EVENT_REG_MAX-1)) 7235759084a4f8 Beau Belgrave 2023-03-28 2422 return -EINVAL; 7235759084a4f8 Beau Belgrave 2023-03-28 2423 7235759084a4f8 Beau Belgrave 2023-03-28 2424 /* Ensure supported size */ 7235759084a4f8 Beau Belgrave 2023-03-28 2425 switch (kreg->enable_size) { 7235759084a4f8 Beau Belgrave 2023-03-28 2426 case 4: 7235759084a4f8 Beau Belgrave 2023-03-28 2427 /* 32-bit */ 7235759084a4f8 Beau Belgrave 2023-03-28 2428 break; 7235759084a4f8 Beau Belgrave 2023-03-28 2429 #if BITS_PER_LONG >= 64 7235759084a4f8 Beau Belgrave 2023-03-28 2430 case 8: 7235759084a4f8 Beau Belgrave 2023-03-28 2431 /* 64-bit */ 7235759084a4f8 Beau Belgrave 2023-03-28 2432 break; 7235759084a4f8 Beau Belgrave 2023-03-28 2433 #endif 7235759084a4f8 Beau Belgrave 2023-03-28 2434 default: 7235759084a4f8 Beau Belgrave 2023-03-28 2435 return -EINVAL; 7235759084a4f8 Beau Belgrave 2023-03-28 2436 } 7235759084a4f8 Beau Belgrave 2023-03-28 2437 7235759084a4f8 Beau Belgrave 2023-03-28 2438 /* Ensure natural alignment */ 7235759084a4f8 Beau Belgrave 2023-03-28 2439 if (kreg->enable_addr % kreg->enable_size) 7235759084a4f8 Beau Belgrave 2023-03-28 2440 return -EINVAL; 7235759084a4f8 Beau Belgrave 2023-03-28 2441 7235759084a4f8 Beau Belgrave 2023-03-28 2442 /* Ensure bit range for size */ 7235759084a4f8 Beau Belgrave 2023-03-28 2443 if (kreg->enable_bit > (kreg->enable_size * BITS_PER_BYTE) - 1) 7235759084a4f8 Beau Belgrave 2023-03-28 2444 return -EINVAL; 7235759084a4f8 Beau Belgrave 2023-03-28 2445 7235759084a4f8 Beau Belgrave 2023-03-28 2446 /* Ensure accessible */ 7235759084a4f8 Beau Belgrave 2023-03-28 2447 if (!access_ok((const void __user *)(uintptr_t)kreg->enable_addr, 7235759084a4f8 Beau Belgrave 2023-03-28 2448 kreg->enable_size)) 7235759084a4f8 Beau Belgrave 2023-03-28 2449 return -EFAULT; 7235759084a4f8 Beau Belgrave 2023-03-28 2450 39d6d08b2edf99 Beau Belgrave 2022-07-28 2451 kreg->size = size; 39d6d08b2edf99 Beau Belgrave 2022-07-28 2452 39d6d08b2edf99 Beau Belgrave 2022-07-28 2453 return 0; 7f5a08c79df35e Beau Belgrave 2022-01-18 2454 } 7f5a08c79df35e Beau Belgrave 2022-01-18 2455 :::::: The code at line 2404 was first introduced by commit :::::: 7f5a08c79df35e68f1a43033450c5050f12bc155 user_events: Add minimal support for trace_event into ftrace :::::: TO: Beau Belgrave :::::: CC: Steven Rostedt (Google) -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki