[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen staging] x86emul: adjust 2nd param of idiv_dbl()



commit ef31716a57e6c29ba14b4f009e9a67277c8117a8
Author:     Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Thu Aug 8 13:27:25 2024 +0200
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Thu Aug 8 13:27:25 2024 +0200

    x86emul: adjust 2nd param of idiv_dbl()
    
    -LONG_MIN cannot be represented in a long and hence is UB, for being one
    larger than LONG_MAX.
    
    The caller passing an unsigned long and the 1st param also being (array
    of) unsigned long, change the 2nd param accordingly while adding the
    sole necessary cast. This was the original form of the function anyway.
    
    Fixes: 5644ce014223 ("x86emul: relax asm() constraints")
    Oss-fuzz: 70923
    Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
    Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
---
 xen/arch/x86/x86_emulate/x86_emulate.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/x86_emulate/x86_emulate.c 
b/xen/arch/x86/x86_emulate/x86_emulate.c
index f0829a19d4..a0deafbd3b 100644
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -607,9 +607,9 @@ static bool div_dbl(unsigned long u[2], unsigned long v)
  * NB. We don't use idiv directly as it's moderately hard to work out
  *     ahead of time whether it will #DE, which we cannot allow to happen.
  */
-static bool idiv_dbl(unsigned long u[2], long v)
+static bool idiv_dbl(unsigned long u[2], unsigned long v)
 {
-    bool negu = (long)u[1] < 0, negv = v < 0;
+    bool negu = (long)u[1] < 0, negv = (long)v < 0;
 
     /* u = abs(u) */
     if ( negu )
--
generated by git-patchbot for /home/xen/git/xen.git#staging



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.