CVE-2024-49927

x86/ioapic: Handle allocation failures gracefully

Published Oct 21, 2024 CVSS 3.1 · 5.5 Medium EPSS < 1% KEV · Not listed
Description
In the Linux kernel, the following vulnerability has been resolved:

x86/ioapic: Handle allocation failures gracefully

Breno observed panics when using failslab under certain conditions during
runtime:

can not alloc irq_pin_list (-1,0,20)
Kernel panic - not syncing: IO-APIC: failed to add irq-pin. Can not proceed

panic+0x4e9/0x590
mp_irqdomain_alloc+0x9ab/0xa80
irq_domain_alloc_irqs_locked+0x25d/0x8d0
__irq_domain_alloc_irqs+0x80/0x110
mp_map_pin_to_irq+0x645/0x890
acpi_register_gsi_ioapic+0xe6/0x150
hpet_open+0x313/0x480

That's a pointless panic which is a leftover of the historic IO/APIC code
which panic'ed during early boot when the interrupt allocation failed.

The only place which might justify panic is the PIT/HPET timer_check() code
which tries to figure out whether the timer interrupt is delivered through
the IO/APIC. But that code does not require to handle interrupt allocation
failures. If the interrupt cannot be allocated then timer delivery fails
and it either panics due to that or falls back to legacy mode.

Cure this by removing the panic wrapper around __add_pin_to_irq_node() and
making mp_irqdomain_alloc() aware of the failure condition and handle it as
any other failure in this function gracefully.

Remediation

No solution or workaround provided in the CVE record

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Debian DLA Debian DLA DLA-4008-1 linux-6.1 security update
Ubuntu USN Ubuntu USN USN-7166-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-7166-2 Linux kernel (AWS) vulnerabilities
Ubuntu USN Ubuntu USN USN-7166-3 Linux kernel (HWE) vulnerabilities
Ubuntu USN Ubuntu USN USN-7166-4 Linux kernel (Xilinx ZynqMP) vulnerabilities
Ubuntu USN Ubuntu USN USN-7186-1 Linux kernel (Intel IoTG) vulnerabilities
Ubuntu USN Ubuntu USN USN-7186-2 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-7194-1 Linux kernel (Azure) vulnerabilities
Ubuntu USN Ubuntu USN USN-7276-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-7277-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-7301-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-7303-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-7303-2 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-7303-3 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-7304-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-7310-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-7311-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-7384-1 Linux kernel (Azure) vulnerabilities
Ubuntu USN Ubuntu USN USN-7384-2 Linux kernel (Azure) vulnerabilities
Ubuntu USN Ubuntu USN USN-7385-1 Linux kernel (IBM) vulnerabilities
Ubuntu USN Ubuntu USN USN-7386-1 Linux kernel (OEM) vulnerabilities
Ubuntu USN Ubuntu USN USN-7403-1 Linux kernel (HWE) vulnerabilities
Ubuntu USN Ubuntu USN USN-7468-1 Linux kernel (Azure, N-Series) vulnerabilities
Ubuntu USN Ubuntu USN USN-8070-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-8070-2 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-8070-3 Linux kernel (FIPS) vulnerabilities
Ubuntu USN Ubuntu USN USN-8098-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-8098-2 Linux kernel (GCP) vulnerabilities
Ubuntu USN Ubuntu USN USN-8098-3 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-8107-1 Linux kernel (AWS FIPS) vulnerabilities
Ubuntu USN Ubuntu USN USN-8112-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-8112-2 Linux kernel (FIPS) vulnerabilities
Ubuntu USN Ubuntu USN USN-8098-4 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-8112-3 Linux kernel (Azure) vulnerabilities
Ubuntu USN Ubuntu USN USN-8112-4 Linux kernel (Azure FIPS) vulnerabilities
Ubuntu USN Ubuntu USN USN-8112-5 Linux kernel (Azure) vulnerabilities
Ubuntu USN Ubuntu USN USN-8098-5 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-8098-6 Linux kernel (FIPS) vulnerabilities
Ubuntu USN Ubuntu USN USN-8098-7 Linux kernel (Azure) vulnerabilities
Ubuntu USN Ubuntu USN USN-8098-8 Linux kernel (Azure FIPS) vulnerabilities
Ubuntu USN Ubuntu USN USN-8098-9 Linux kernel (IBM) vulnerabilities
Ubuntu USN Ubuntu USN USN-8201-1 Linux kernel (Azure) vulnerabilities
Ubuntu USN Ubuntu USN USN-8224-1 Linux kernel (BlueField) vulnerabilities
Ubuntu USN Ubuntu USN USN-8098-10 Linux kernel (Raspberry Pi) vulnerabilities
History
Type Values Removed Values Added
First Time appeared Redhat
Redhat enterprise Linux
CPEs cpe:/a:redhat:enterprise_linux:9
cpe:/o:redhat:enterprise_linux:9
Vendors & Products Redhat
Redhat enterprise Linux
Type Values Removed Values Added
Weaknesses CWE-703
Type Values Removed Values Added
First Time appeared Linux
Linux linux Kernel
Weaknesses NVD-CWE-noinfo
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
Type Values Removed Values Added
References
Metrics threat_severity

None

cvssV3_1

{'score': 5.5, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Moderate

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: x86/ioapic: Handle allocation failures gracefully Breno observed panics when using failslab under certain conditions during runtime: can not alloc irq_pin_list (-1,0,20) Kernel panic - not syncing: IO-APIC: failed to add irq-pin. Can not proceed panic+0x4e9/0x590 mp_irqdomain_alloc+0x9ab/0xa80 irq_domain_alloc_irqs_locked+0x25d/0x8d0 __irq_domain_alloc_irqs+0x80/0x110 mp_map_pin_to_irq+0x645/0x890 acpi_register_gsi_ioapic+0xe6/0x150 hpet_open+0x313/0x480 That's a pointless panic which is a leftover of the historic IO/APIC code which panic'ed during early boot when the interrupt allocation failed. The only place which might justify panic is the PIT/HPET timer_check() code which tries to figure out whether the timer interrupt is delivered through the IO/APIC. But that code does not require to handle interrupt allocation failures. If the interrupt cannot be allocated then timer delivery fails and it either panics due to that or falls back to legacy mode. Cure this by removing the panic wrapper around __add_pin_to_irq_node() and making mp_irqdomain_alloc() aware of the failure condition and handle it as any other failure in this function gracefully.
Title x86/ioapic: Handle allocation failures gracefully
References
Weaknesses

Sources

Status
PUBLISHED
Assigner
Linux
Published
Updated
May 11, 2026, 8:41 PM
Reserved
Oct 21, 2024, 12:17 PM
Status
Modified
Published
Oct 21, 2024, 6:15 PM
Modified
Jun 17, 2026, 8:00 AM
Severity
Moderate
Public date
Oct 21, 2024, 12:00 AM