mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86/ioapic: Fix signed shifts in io_apic.c
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.barnes@cloud.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
master commit: c5746b021e
master date: 2024-06-21 15:09:26 +0100
This commit is contained in:
1 parent
7967bd358e
commit
0dc5fbee17
1 file changed
+4
-2
@@ -1692,7 +1692,8 @@ 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 +1757,8 @@ 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);
|
||||
|
||||