Le 24/11/2025 à 20:15, Thomas Gleixner a écrit :
On Tue, Nov 25 2025 at 01:37, kernel test robot wrote:
tree:   https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core/rseq
head:   21782b3a5cd40892cb2995aa1ec3e74dd1112f1d
commit: abc850e7616c91ebaa3f5ba3617ab0a104d45039 [25/39] rseq: Provide and use 
rseq_update_user_cs()
config: powerpc-randconfig-002-20251124 
(https://download.01.org/0day-ci/archive/20251125/[email protected]/config)
compiler: clang version 16.0.6 (https://github.com/llvm/llvm-project 
7cbf1a2591520c2491aa35339f227775f4d3adf6)
reproduce (this is a W=1 build): 
(https://download.01.org/0day-ci/archive/20251125/[email protected]/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 <[email protected]>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/[email protected]/

All errors (new ones prefixed by >>):

    In file included from kernel/rseq.c:75:
include/linux/rseq_entry.h:132:3: error: invalid operand for instruction
                    unsafe_get_user(start_ip, &ucs->start_ip, efault);
                    ^
    include/linux/uaccess.h:606:2: note: expanded from macro 'unsafe_get_user'
            arch_unsafe_get_user(x, ptr, local_label);      \
            ^
    arch/powerpc/include/asm/uaccess.h:458:2: note: expanded from macro 
'arch_unsafe_get_user'
            __get_user_size_goto(__gu_val, __gu_addr, sizeof(*(p)), e); \
            ^
    arch/powerpc/include/asm/uaccess.h:282:2: note: expanded from macro 
'__get_user_size_goto'
            __get_user_size_allowed(x, ptr, size, __gus_retval);    \
            ^
    arch/powerpc/include/asm/uaccess.h:273:10: note: expanded from macro 
'__get_user_size_allowed'
            case 8: __get_user_asm2(x, (u64 __user *)ptr, retval);  break;  \
                    ^
    arch/powerpc/include/asm/uaccess.h:256:4: note: expanded from macro 
'__get_user_asm2'
                    "       li %1+1,0\n"                    \
                     ^
    <inline asm>:7:5: note: instantiated into assembly here
            li 31+1,0

Definitely not a problem of tip core/rseq. It just ends up in
__get_user_asm2() and then the compiler gets unhappy about the PowerPC
inline assembly for whatever reason.

I see it is a CLANG build.

CLANG might be less flexible, can you test with following change ?

diff --git a/arch/powerpc/include/asm/uaccess.h b/arch/powerpc/include/asm/uaccess.h
index 4f5a46a77fa2..33d5f7ade254 100644
--- a/arch/powerpc/include/asm/uaccess.h
+++ b/arch/powerpc/include/asm/uaccess.h
@@ -253,7 +253,7 @@ __gus_failed:                                               
                \
                ".section .fixup,\"ax\"\n"          \
                "4:        li %0,%3\n"                        \
                "  li %1,0\n"                 \
-               "  li %1+1,0\n"                       \
+               "  li %L1,0\n"                        \
                "  b 3b\n"                            \
                ".previous\n"                         \
                EX_TABLE(1b, 4b)                        \


Thanks
Christophe

Reply via email to