On 20.06.2024 17:36, Matthew Barnes wrote:
> There exists bitshifts in the IOAPIC code where signed integers are
> shifted to the left by up to 31 bits, which is undefined behaviour.
> 
> This patch fixes this by changing the integers from signed to unsigned.
> 
> Signed-off-by: Matthew Barnes <matthew.bar...@cloud.com>
> Reviewed-by: Jan Beulich <jbeul...@suse.com>

Only almost, ...

> ---
> Changes in v2:
> - Correct signed shifting in mask_and_ack_level_ioapic_irq()
> - Adjust bracket spacing to uphold Xen style

... as that was only half of what I had asked for. The other half was ...

> --- a/xen/arch/x86/io_apic.c
> +++ b/xen/arch/x86/io_apic.c
> @@ -1692,7 +1692,7 @@ static void cf_check 
> mask_and_ack_level_ioapic_irq(struct irq_desc *desc)
>         !io_apic_level_ack_pending(desc->irq))
>          move_masked_irq(desc);
>  
> -    if ( !(v & (1 << (i & 0x1f))) ) {
> +    if ( !(v & (1U << (i & 0x1f))) ) {
>          spin_lock(&ioapic_lock);
>          __edge_IO_APIC_irq(desc->irq);
>          __level_IO_APIC_irq(desc->irq);
> @@ -1756,7 +1756,7 @@ static void cf_check end_level_ioapic_irq_new(struct 
> irq_desc *desc, u8 vector)
>           !io_apic_level_ack_pending(desc->irq) )
>          move_native_irq(desc);
>  
> -    if (!(v & (1 << (i & 0x1f)))) {
> +    if ( !(v & (1U << (i & 0x1f))) ) {
>          spin_lock(&ioapic_lock);
>          __mask_IO_APIC_irq(desc->irq);
>          __edge_IO_APIC_irq(desc->irq);

... to put each opening figure brace on their own line. I guess Andrew or
I will do that while committing then.

Jan

Reply via email to