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

Re: [PATCH] x86emul: adjust 2nd param of idiv_dbl()



On Mon, 5 Aug 2024, Jan Beulich wrote:
> -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>


> --- 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],
>   * 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 )
> 



 


Rackspace

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