CVE-2026-64250
Full vulnerability record from the local CVENow database.
Description
In the Linux kernel, the following vulnerability has been resolved: LoongArch: Report dying CPU to RCU in stop_this_cpu() This is a port of MIPS commit 9f3f3bdc6d9dac1 ("MIPS: smp: report dying CPU to RCU in stop_this_cpu()"). smp_send_stop() parks all secondary CPUs in stop_this_cpu(). And the function marks the CPU offline for the scheduler via set_cpu_online(false) but never informs RCU, so RCU keeps expecting a quiescent state from CPUs that are now spinning forever with interrupts disabled. As long as nothing waits for an RCU grace period after smp_send_stop() this is harmless, which is why it went unnoticed. However, since commit 91840be8f710370 ("irq_work: Fix use-after-free in irq_work_single() on PREEMPT_RT"), irq_work_sync() calls synchronize_rcu() on architectures without an irq_work self-IPI, i.e. where arch_irq_work_has_interrupt() returns false. Any irq_work_sync() issued in the reboot/shutdown/halt path after smp_send_stop() then blocks on a grace period that can never complete, hanging the reboot: WARNING: CPU: 0 PID: 15 at kernel/irq_work.c:144 irq_work_queue_on ... rcu: INFO: rcu_sched detected stalls on CPUs/tasks: rcu: Offline CPU 1 blocking current GP. rcu: Offline CPU 2 blocking current GP. rcu: Offline CPU 3 blocking current GP. This issue needs some hacks to reproduce, and it was not noticed on LoongArch because arch_irq_work_has_interrupt() usually returns true. Call rcutree_report_cpu_dead() once interrupts are disabled, mirroring the generic CPU-hotplug offline path, so RCU stops waiting on the parked CPUs and grace periods can still complete. LoongArch shuts down all CPUs here without going through the CPU-hotplug mechanism, so this report is not otherwise issued.
View original CVE JSON
{
"id": "CVE-2026-64250",
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"published": "2026-07-24T16:16:54.577",
"lastModified": "2026-11-08T16:10:00.183",
"vulnStatus": "Analyzed",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nLoongArch: Report dying CPU to RCU in stop_this_cpu()\n\nThis is a port of MIPS commit 9f3f3bdc6d9dac1 (\"MIPS: smp: report dying\nCPU to RCU in stop_this_cpu()\"). smp_send_stop() parks all secondary\nCPUs in stop_this_cpu(). And the function marks the CPU offline for the\nscheduler via set_cpu_online(false) but never informs RCU, so RCU keeps\nexpecting a quiescent state from CPUs that are now spinning forever with\ninterrupts disabled.\n\nAs long as nothing waits for an RCU grace period after smp_send_stop()\nthis is harmless, which is why it went unnoticed. However, since commit\n91840be8f710370 (\"irq_work: Fix use-after-free in irq_work_single() on\nPREEMPT_RT\"), irq_work_sync() calls synchronize_rcu() on architectures\nwithout an irq_work self-IPI, i.e. where arch_irq_work_has_interrupt()\nreturns false. Any irq_work_sync() issued in the reboot/shutdown/halt\npath after smp_send_stop() then blocks on a grace period that can never\ncomplete, hanging the reboot:\n\n WARNING: CPU: 0 PID: 15 at kernel/irq_work.c:144 irq_work_queue_on\n ...\n rcu: INFO: rcu_sched detected stalls on CPUs/tasks:\n rcu: Offline CPU 1 blocking current GP.\n rcu: Offline CPU 2 blocking current GP.\n rcu: Offline CPU 3 blocking current GP.\n\nThis issue needs some hacks to reproduce, and it was not noticed on\nLoongArch because arch_irq_work_has_interrupt() usually returns true.\n\nCall rcutree_report_cpu_dead() once interrupts are disabled, mirroring\nthe generic CPU-hotplug offline path, so RCU stops waiting on the parked\nCPUs and grace periods can still complete. LoongArch shuts down all CPUs\nhere without going through the CPU-hotplug mechanism, so this report is\nnot otherwise issued."
},
{
"lang": "es",
"value": "En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:\n\nLoongArch: Informar CPU moribunda a RCU en stop_this_cpu()\n\nEste es un puerto del commit MIPS 9f3f3bdc6d9dac1 (’MIPS: smp: informar CPU moribunda a RCU en stop_this_cpu()’). smp_send_stop() aparca todas las CPUs secundarias en stop_this_cpu(). Y la función marca la CPU como fuera de línea para el planificador a través de set_cpu_online(false) pero nunca informa a RCU, por lo que RCU sigue esperando un estado de reposo de CPUs que ahora están girando indefinidamente con las interrupciones deshabilitadas.\n\nMientras nada espere un período de gracia de RCU después de smp_send_stop(), esto es inofensivo, razón por la cual pasó desapercibido. Sin embargo, desde el commit 91840be8f710370 (’irq_work: Corregir uso después de liberación en irq_work_single() en PREEMPT_RT’), irq_work_sync() llama a synchronize_rcu() en arquitecturas sin un auto-IPI de irq_work, es decir, donde arch_irq_work_has_interrupt() devuelve falso. Cualquier irq_work_sync() emitido en la ruta de reinicio/apagado/detención después de smp_send_stop() entonces se bloquea en un período de gracia que nunca puede completarse, colgando el reinicio:\n\n ADVERTENCIA: CPU: 0 PID: 15 en kernel/irq_work.c:144 irq_work_queue_on\n ...\n rcu: INFO: rcu_sched detectó bloqueos en CPUs/tareas:\n rcu: CPU fuera de línea 1 bloqueando GP actual.\n rcu: CPU fuera de línea 2 bloqueando GP actual.\n rcu: CPU fuera de línea 3 bloqueando GP actual.\n\nEste problema necesita algunos trucos para reproducirse, y no fue notado en LoongArch porque arch_irq_work_has_interrupt() usualmente devuelve verdadero.\n\nLlamar a rcutree_report_cpu_dead() una vez que las interrupciones están deshabilitadas, reflejando la ruta genérica de desconexión de CPU-hotplug, para que RCU deje de esperar en las CPUs aparcadas y los períodos de gracia aún puedan completarse. LoongArch apaga todas las CPUs aquí sin pasar por el mecanismo de CPU-hotplug, por lo que este informe no se emite de otra manera."
}
],
"affected": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"affectedData": [
{
"vendor": "Linux",
"product": "Linux",
"defaultStatus": "unaffected",
"programFiles": [
"arch/loongarch/kernel/smp.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"versions": [
{
"version": "2dc79362302922cb18f35e262712b5e58de65442",
"lessThan": "262dadc619e69ebeb97affd334cd1078a9704e98",
"versionType": "git",
"status": "affected"
},
{
"version": "eef4f71b46a9929ac33e968538c9dd5d96a02460",
"lessThan": "1fa22de588a65880d6fe54c38c87fffe7d519f60",
"versionType": "git",
"status": "affected"
},
{
"version": "684a78183c54c23e70d1cba320f7fc184604210b",
"lessThan": "a0269e928728f970c782319fee53d92d4ea4e512",
"versionType": "git",
"status": "affected"
},
{
"version": "18c0456ea2615b1a743a6db739c74411c3b42bc6",
"lessThan": "90e254f18b8c224460082329dd5c42fd30995c2f",
"versionType": "git",
"status": "affected"
},
{
"version": "91840be8f710370607f949a627e070896faeddb8",
"lessThan": "0833b2b84c2fc1387f8165f0cbf6a02d67f647a5",
"versionType": "git",
"status": "affected"
},
{
"version": "91840be8f710370607f949a627e070896faeddb8",
"lessThan": "f2539c56c74691e7a88af6372ba2b48c06ed2fe4",
"versionType": "git",
"status": "affected"
},
{
"version": "81b582784518196eff1050212a046bc29d3a05dd",
"versionType": "git",
"status": "affected"
},
{
"version": "6.1.175",
"lessThan": "6.1.178",
"versionType": "semver",
"status": "affected"
},
{
"version": "6.6.142",
"lessThan": "6.6.145",
"versionType": "semver",
"status": "affected"
},
{
"version": "6.12.92",
"lessThan": "6.12.95",
"versionType": "semver",
"status": "affected"
},
{
"version": "6.18.34",
"lessThan": "6.18.38",
"versionType": "semver",
"status": "affected"
},
{
"version": "7.0.11",
"lessThan": "7.1",
"versionType": "semver",
"status": "affected"
}
]
},
{
"vendor": "Linux",
"product": "Linux",
"defaultStatus": "affected",
"programFiles": [
"arch/loongarch/kernel/smp.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"versions": [
{
"version": "7.1",
"status": "affected"
},
{
"version": "0",
"lessThan": "7.1",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.1.178",
"lessThanOrEqual": "6.1.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.6.145",
"lessThanOrEqual": "6.6.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.12.95",
"lessThanOrEqual": "6.12.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.18.38",
"lessThanOrEqual": "6.18.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "7.1.3",
"lessThanOrEqual": "7.1.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "7.2",
"lessThanOrEqual": "*",
"versionType": "original_commit_for_fix",
"status": "unaffected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV31": [
{
"source": "[email protected]",
"type": "Primary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H",
"baseScore": 5.5,
"baseSeverity": "MEDIUM",
"attackVector": "LOCAL",
"attackComplexity": "LOW",
"privilegesRequired": "LOW",
"userInteraction": "NONE",
"scope": "UNCHANGED",
"confidentialityImpact": "NONE",
"integrityImpact": "NONE",
"availabilityImpact": "HIGH"
},
"exploitabilityScore": 1.8,
"impactScore": 3.6
}
]
},
"weaknesses": [
{
"source": "[email protected]",
"type": "Primary",
"description": [
{
"lang": "en",
"value": "NVD-CWE-noinfo"
}
]
}
],
"configurations": [
{
"nodes": [
{
"operator": "OR",
"negate": false,
"cpeMatch": [
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "6.1.175",
"versionEndExcluding": "6.1.178",
"matchCriteriaId": "6476CFBE-7300-465C-8DBA-620D3D005F5A"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "6.6.142",
"versionEndExcluding": "6.6.145",
"matchCriteriaId": "D144D922-9AD2-409A-85E8-D8620FC3CA68"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "6.12.92",
"versionEndExcluding": "6.12.95",
"matchCriteriaId": "2E4368C8-9FF7-4CC0-87A3-C707FFF4C1C0"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "6.18.34",
"versionEndExcluding": "6.18.38",
"matchCriteriaId": "756FA43D-0AB4-4F32-87FC-8C7552758B86"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "7.0.11",
"versionEndExcluding": "7.1",
"matchCriteriaId": "F099E30C-99C7-4E28-BFFA-57D8DCD36E9B"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "7.1.1",
"versionEndExcluding": "7.1.3",
"matchCriteriaId": "45BB622E-915E-4013-B2C5-D455CDA9D2DD"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:7.1:-:*:*:*:*:*:*",
"matchCriteriaId": "42591D75-4648-4AF0-B193-8AE633EFFACF"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:7.1:rc4:*:*:*:*:*:*",
"matchCriteriaId": "E5910A9D-F60A-409A-B486-FE66BFEBA9B9"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:7.1:rc5:*:*:*:*:*:*",
"matchCriteriaId": "81DFF19E-9CF8-49C6-8C36-1E4038622933"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:7.1:rc6:*:*:*:*:*:*",
"matchCriteriaId": "B0E8FC71-3952-444C-83E9-718DBBBEC615"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:7.1:rc7:*:*:*:*:*:*",
"matchCriteriaId": "1039E95A-8CC3-4C88-8FF9-5C08EEB861C9"
}
]
}
]
}
],
"references": [
{
"url": "https://git.kernel.org/stable/c/0833b2b84c2fc1387f8165f0cbf6a02d67f647a5",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
]
},
{
"url": "https://git.kernel.org/stable/c/1fa22de588a65880d6fe54c38c87fffe7d519f60",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
]
},
{
"url": "https://git.kernel.org/stable/c/262dadc619e69ebeb97affd334cd1078a9704e98",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
]
},
{
"url": "https://git.kernel.org/stable/c/90e254f18b8c224460082329dd5c42fd30995c2f",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
]
},
{
"url": "https://git.kernel.org/stable/c/a0269e928728f970c782319fee53d92d4ea4e512",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
]
},
{
"url": "https://git.kernel.org/stable/c/f2539c56c74691e7a88af6372ba2b48c06ed2fe4",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
]
}
]
}