In the Linux kernel, the following vulnerability has been resolved:
x86/i8259: Mark legacy PIC interrupts with IRQ_LEVEL
Baoquan reported that after triggering a crash the subsequent crash-kernel fails to boot about half of the time. It triggers a NULL pointer dereference in the periodic tick code.
This happens because the legacy timer interrupt (IRQ0) is resent in software which happens in soft interrupt (tasklet) context. In this context getirqregs() returns NULL which leads to the NULL pointer dereference.
The reason for the resend is a spurious APIC interrupt on the IRQ0 vector which is captured and leads to a resend when the legacy timer interrupt is enabled. This is wrong because the legacy PIC interrupts are level triggered and therefore should never be resent in software, but nothing ever sets the IRQ_LEVEL flag on those interrupts, so the core code does not know about their trigger type.
Ensure that IRQ_LEVEL is set when the legacy PCI interrupts are set up.
[
{
"signature_type": "Function",
"digest": {
"function_hash": "83169469318434340373045926572584925957",
"length": 211.0
},
"target": {
"file": "arch/x86/kernel/i8259.c",
"function": "make_8259A_irq"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@137f1b47da5f58805da42c1b7811e28c1e353f39",
"id": "CVE-2023-52993-01067646",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "83169469318434340373045926572584925957",
"length": 211.0
},
"target": {
"file": "arch/x86/kernel/i8259.c",
"function": "make_8259A_irq"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e284c273dbb4c1ed68d4204bff94d0b10e4a90f5",
"id": "CVE-2023-52993-179ddd7c",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "121307213935847844163921795177907553424",
"length": 206.0
},
"target": {
"file": "arch/x86/kernel/irqinit.c",
"function": "init_ISA_irqs"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@137f1b47da5f58805da42c1b7811e28c1e353f39",
"id": "CVE-2023-52993-1df74f0a",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"306036100320283736397020346893463579026",
"186898638626495345322851559843263897782",
"106825280046722514174019690517901662718",
"3670045698064066269950357892879377001",
"269859410251012687141564814958537987290"
]
},
"target": {
"file": "arch/x86/kernel/irqinit.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@744fe9be9665227335539b7a77ece8d9ff62b6c0",
"id": "CVE-2023-52993-1f8faad5",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "121307213935847844163921795177907553424",
"length": 206.0
},
"target": {
"file": "arch/x86/kernel/irqinit.c",
"function": "init_ISA_irqs"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8770cd9d7c14aa99c255a0d08186f0be953e1638",
"id": "CVE-2023-52993-23039240",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "83169469318434340373045926572584925957",
"length": 211.0
},
"target": {
"file": "arch/x86/kernel/i8259.c",
"function": "make_8259A_irq"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5fa55950729d0762a787451dc52862c3f850f859",
"id": "CVE-2023-52993-24fc3704",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"254497642680695197261206259951214046815",
"170940697222956329519408473709327459819",
"106825280046722514174019690517901662718",
"3670045698064066269950357892879377001",
"269859410251012687141564814958537987290"
]
},
"target": {
"file": "arch/x86/kernel/irqinit.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8770cd9d7c14aa99c255a0d08186f0be953e1638",
"id": "CVE-2023-52993-29822be9",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"199532258681378082877144331808771879886",
"132474781606072936910023118651828425989",
"131014651197523418504785392841936052359",
"25622899419060794141181159979650744697"
]
},
"target": {
"file": "arch/x86/kernel/i8259.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8770cd9d7c14aa99c255a0d08186f0be953e1638",
"id": "CVE-2023-52993-2c1084bf",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"199532258681378082877144331808771879886",
"132474781606072936910023118651828425989",
"207550962213619793075532620145195005238",
"192262753694903083726382184323586657444"
]
},
"target": {
"file": "arch/x86/kernel/i8259.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@744fe9be9665227335539b7a77ece8d9ff62b6c0",
"id": "CVE-2023-52993-34943311",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"199532258681378082877144331808771879886",
"132474781606072936910023118651828425989",
"131014651197523418504785392841936052359",
"25622899419060794141181159979650744697"
]
},
"target": {
"file": "arch/x86/kernel/i8259.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5fa55950729d0762a787451dc52862c3f850f859",
"id": "CVE-2023-52993-4bae6762",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"254497642680695197261206259951214046815",
"170940697222956329519408473709327459819",
"106825280046722514174019690517901662718",
"3670045698064066269950357892879377001",
"269859410251012687141564814958537987290"
]
},
"target": {
"file": "arch/x86/kernel/irqinit.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@496975d1a2937f4baadf3d985991b13fc4fc4f27",
"id": "CVE-2023-52993-4fdc5135",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"254497642680695197261206259951214046815",
"170940697222956329519408473709327459819",
"106825280046722514174019690517901662718",
"3670045698064066269950357892879377001",
"269859410251012687141564814958537987290"
]
},
"target": {
"file": "arch/x86/kernel/irqinit.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5fa55950729d0762a787451dc52862c3f850f859",
"id": "CVE-2023-52993-55fe0acc",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"199532258681378082877144331808771879886",
"132474781606072936910023118651828425989",
"131014651197523418504785392841936052359",
"25622899419060794141181159979650744697"
]
},
"target": {
"file": "arch/x86/kernel/i8259.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e284c273dbb4c1ed68d4204bff94d0b10e4a90f5",
"id": "CVE-2023-52993-59324313",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "235845398934809923237319586951082629925",
"length": 183.0
},
"target": {
"file": "arch/x86/kernel/i8259.c",
"function": "make_8259A_irq"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@744fe9be9665227335539b7a77ece8d9ff62b6c0",
"id": "CVE-2023-52993-6096ca9a",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "83169469318434340373045926572584925957",
"length": 211.0
},
"target": {
"file": "arch/x86/kernel/i8259.c",
"function": "make_8259A_irq"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8770cd9d7c14aa99c255a0d08186f0be953e1638",
"id": "CVE-2023-52993-62419e61",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "121307213935847844163921795177907553424",
"length": 206.0
},
"target": {
"file": "arch/x86/kernel/irqinit.c",
"function": "init_ISA_irqs"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0b08201158f177aab469e356b4d6af24fdd118df",
"id": "CVE-2023-52993-6343838d",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"199532258681378082877144331808771879886",
"132474781606072936910023118651828425989",
"131014651197523418504785392841936052359",
"25622899419060794141181159979650744697"
]
},
"target": {
"file": "arch/x86/kernel/i8259.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0b08201158f177aab469e356b4d6af24fdd118df",
"id": "CVE-2023-52993-72f6b937",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "121307213935847844163921795177907553424",
"length": 206.0
},
"target": {
"file": "arch/x86/kernel/irqinit.c",
"function": "init_ISA_irqs"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5fa55950729d0762a787451dc52862c3f850f859",
"id": "CVE-2023-52993-74738e42",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"254497642680695197261206259951214046815",
"170940697222956329519408473709327459819",
"106825280046722514174019690517901662718",
"3670045698064066269950357892879377001",
"269859410251012687141564814958537987290"
]
},
"target": {
"file": "arch/x86/kernel/irqinit.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0b08201158f177aab469e356b4d6af24fdd118df",
"id": "CVE-2023-52993-75b55f3a",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "121307213935847844163921795177907553424",
"length": 206.0
},
"target": {
"file": "arch/x86/kernel/irqinit.c",
"function": "init_ISA_irqs"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e284c273dbb4c1ed68d4204bff94d0b10e4a90f5",
"id": "CVE-2023-52993-7b6ba540",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"199532258681378082877144331808771879886",
"132474781606072936910023118651828425989",
"131014651197523418504785392841936052359",
"25622899419060794141181159979650744697"
]
},
"target": {
"file": "arch/x86/kernel/i8259.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@137f1b47da5f58805da42c1b7811e28c1e353f39",
"id": "CVE-2023-52993-aa625998",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"254497642680695197261206259951214046815",
"170940697222956329519408473709327459819",
"106825280046722514174019690517901662718",
"3670045698064066269950357892879377001",
"269859410251012687141564814958537987290"
]
},
"target": {
"file": "arch/x86/kernel/irqinit.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@137f1b47da5f58805da42c1b7811e28c1e353f39",
"id": "CVE-2023-52993-b8c9773d",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "228088914486625605315475474697551274442",
"length": 276.0
},
"target": {
"file": "arch/x86/kernel/irqinit.c",
"function": "init_ISA_irqs"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@744fe9be9665227335539b7a77ece8d9ff62b6c0",
"id": "CVE-2023-52993-c0683a3b",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "83169469318434340373045926572584925957",
"length": 211.0
},
"target": {
"file": "arch/x86/kernel/i8259.c",
"function": "make_8259A_irq"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@496975d1a2937f4baadf3d985991b13fc4fc4f27",
"id": "CVE-2023-52993-c84b38e4",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"254497642680695197261206259951214046815",
"170940697222956329519408473709327459819",
"106825280046722514174019690517901662718",
"3670045698064066269950357892879377001",
"269859410251012687141564814958537987290"
]
},
"target": {
"file": "arch/x86/kernel/irqinit.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e284c273dbb4c1ed68d4204bff94d0b10e4a90f5",
"id": "CVE-2023-52993-d1a20465",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"199532258681378082877144331808771879886",
"132474781606072936910023118651828425989",
"131014651197523418504785392841936052359",
"25622899419060794141181159979650744697"
]
},
"target": {
"file": "arch/x86/kernel/i8259.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@496975d1a2937f4baadf3d985991b13fc4fc4f27",
"id": "CVE-2023-52993-d3c45936",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "121307213935847844163921795177907553424",
"length": 206.0
},
"target": {
"file": "arch/x86/kernel/irqinit.c",
"function": "init_ISA_irqs"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@496975d1a2937f4baadf3d985991b13fc4fc4f27",
"id": "CVE-2023-52993-ee254c55",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "83169469318434340373045926572584925957",
"length": 211.0
},
"target": {
"file": "arch/x86/kernel/i8259.c",
"function": "make_8259A_irq"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0b08201158f177aab469e356b4d6af24fdd118df",
"id": "CVE-2023-52993-f83052fe",
"deprecated": false,
"signature_version": "v1"
}
]