All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86: math-emu: fix div_Xsig prototype
@ 2025-08-07 20:53 Arnd Bergmann
  2025-11-09 23:04 ` [tip: x86/build] x86/math-emu: Fix div_Xsig() prototype tip-bot2 for Arnd Bergmann
  0 siblings, 1 reply; 2+ messages in thread
From: Arnd Bergmann @ 2025-08-07 20:53 UTC (permalink / raw)
  To: Bill Metzenthen, Thomas Gleixner, Ingo Molnar, Borislav Petkov,
	Dave Hansen, x86, Nathan Chancellor
  Cc: Arnd Bergmann, H. Peter Anvin, Nick Desaulniers, Bill Wendling,
	Justin Stitt, linux-kernel, llvm

From: Arnd Bergmann <arnd@arndb.de>

The third argument of div_Xsig() is the output of the division, but is marked
'const', which means the compiler is not expecting it to be updated and may
generate bad code around the call. clang-21 now warns about the pattern since
an uninitialized variable is passed into two 'const' arguments by reference:

arch/x86/math-emu/poly_atan.c:93:28: error: variable 'argSignif' is uninitialized when passed as a const pointer argument here [-Werror,-Wuninitialized-const-pointer]
   93 |         div_Xsig(&Numer, &Denom, &argSignif);
      |                                   ^~~~~~~~~
arch/x86/math-emu/poly_l2.c:195:29: error: variable 'argSignif' is uninitialized when passed as a const pointer argument here [-Werror,-Wuninitialized-const-pointer]
  195 |                 div_Xsig(&Numer, &Denom, &argSignif);
      |                                           ^~~~~~~~~

The implementation is in assembly, so the problem has gone unnoticed since the
code was added in the linux-1.1 days. Remove the 'const' marker here.

Fixes: e19a1bdb835c ("Import 1.1.38")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/x86/math-emu/poly.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/math-emu/poly.h b/arch/x86/math-emu/poly.h
index fc1c887ca073..654bfe4e29a0 100644
--- a/arch/x86/math-emu/poly.h
+++ b/arch/x86/math-emu/poly.h
@@ -39,7 +39,7 @@ asmlinkage void mul_Xsig_Xsig(Xsig *dest, const Xsig *mult);
 asmlinkage void shr_Xsig(Xsig *, const int n);
 asmlinkage int round_Xsig(Xsig *);
 asmlinkage int norm_Xsig(Xsig *);
-asmlinkage void div_Xsig(Xsig *x1, const Xsig *x2, const Xsig *dest);
+asmlinkage void div_Xsig(Xsig *x1, const Xsig *x2, Xsig *dest);
 
 /* Macro to extract the most significant 32 bits from a long long */
 #define LL_MSW(x)     (((unsigned long *)&x)[1])
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2025-11-09 23:05 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-07 20:53 [PATCH] x86: math-emu: fix div_Xsig prototype Arnd Bergmann
2025-11-09 23:04 ` [tip: x86/build] x86/math-emu: Fix div_Xsig() prototype tip-bot2 for Arnd Bergmann

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.