Skip to content

Commit 9f15e0f

Browse files
t-8chKAGA-KOKO
authored andcommitted
selftests: vDSO: Fix -Wunitialized in powerpc VDSO_CALL() wrapper
The _rval register variable is meant to be an output operand of the asm statement but is instead used as input operand. clang 20.1 notices this and triggers -Wuninitialized warnings: tools/testing/selftests/timers/auxclock.c:154:10: error: variable '_rval' is uninitialized when used here [-Werror,-Wuninitialized] 154 | return VDSO_CALL(self->vdso_clock_gettime64, 2, clockid, ts); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tools/testing/selftests/timers/../vDSO/vdso_call.h:59:10: note: expanded from macro 'VDSO_CALL' 59 | : "r" (_rval) \ | ^~~~~ tools/testing/selftests/timers/auxclock.c:154:10: note: variable '_rval' is declared here tools/testing/selftests/timers/../vDSO/vdso_call.h:47:2: note: expanded from macro 'VDSO_CALL' 47 | register long _rval asm ("r3"); \ | ^ It seems the list of input and output operands have been switched around. However as the argument registers are not always initialized they can not be marked as pure inputs as that would trigger -Wuninitialized warnings. Adding _rval as another input and output operand does also not work as it would collide with the existing _r3 variable. Instead reuse _r3 for both the argument and the return value. Fixes: 6eda706 ("selftests: vDSO: fix the way vDSO functions are called for powerpc") Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu> Link: https://lore.kernel.org/all/20250812-vdso-tests-fixes-v2-1-90f499dd35f8@linutronix.de Closes: https://lore.kernel.org/oe-kbuild-all/202506180223.BOOk5jDK-lkp@intel.com/
1 parent 437054b commit 9f15e0f

1 file changed

Lines changed: 3 additions & 4 deletions

File tree

tools/testing/selftests/vDSO/vdso_call.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444
register long _r6 asm ("r6"); \
4545
register long _r7 asm ("r7"); \
4646
register long _r8 asm ("r8"); \
47-
register long _rval asm ("r3"); \
4847
\
4948
LOADARGS_##nr(fn, args); \
5049
\
@@ -54,13 +53,13 @@
5453
" bns+ 1f\n" \
5554
" neg 3, 3\n" \
5655
"1:" \
57-
: "+r" (_r0), "=r" (_r3), "+r" (_r4), "+r" (_r5), \
56+
: "+r" (_r0), "+r" (_r3), "+r" (_r4), "+r" (_r5), \
5857
"+r" (_r6), "+r" (_r7), "+r" (_r8) \
59-
: "r" (_rval) \
58+
: \
6059
: "r9", "r10", "r11", "r12", "cr0", "cr1", "cr5", \
6160
"cr6", "cr7", "xer", "lr", "ctr", "memory" \
6261
); \
63-
_rval; \
62+
_r3; \
6463
})
6564

6665
#else

0 commit comments

Comments
 (0)