mirror of
https://github.com/torvalds/linux.git
synced 2026-05-29 17:43:52 +02:00
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: 6eda706a53 ("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/
This commit is contained in:
parent
437054b1bb
commit
9f15e0f9ef
|
|
@ -44,7 +44,6 @@
|
|||
register long _r6 asm ("r6"); \
|
||||
register long _r7 asm ("r7"); \
|
||||
register long _r8 asm ("r8"); \
|
||||
register long _rval asm ("r3"); \
|
||||
\
|
||||
LOADARGS_##nr(fn, args); \
|
||||
\
|
||||
|
|
@ -54,13 +53,13 @@
|
|||
" bns+ 1f\n" \
|
||||
" neg 3, 3\n" \
|
||||
"1:" \
|
||||
: "+r" (_r0), "=r" (_r3), "+r" (_r4), "+r" (_r5), \
|
||||
: "+r" (_r0), "+r" (_r3), "+r" (_r4), "+r" (_r5), \
|
||||
"+r" (_r6), "+r" (_r7), "+r" (_r8) \
|
||||
: "r" (_rval) \
|
||||
: \
|
||||
: "r9", "r10", "r11", "r12", "cr0", "cr1", "cr5", \
|
||||
"cr6", "cr7", "xer", "lr", "ctr", "memory" \
|
||||
); \
|
||||
_rval; \
|
||||
_r3; \
|
||||
})
|
||||
|
||||
#else
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user