CVE-2026-98391
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
drm/xe: Proteger el worker de fallos de página con una comprobación de runtime PM
Durante la finalización de una VM, la referencia de runtime PM de la VM se libera de forma asíncrona, lo que permite que el dispositivo se suspenda automáticamente mientras siguen en cola fallos de página obsoletos pertenecientes a la VM ya finalizada. Cuando el worker de fallos de página intenta posteriormente confirmar (ack) uno de estos, llama a guc_ct_send_locked() en un dispositivo ya suspendido, provocando:
Una VM o cola de ejecución activa siempre mantiene una referencia de PM mientras tenga trabajo pendiente, por lo que si el dispositivo está suspendido en el momento de la confirmación, el contexto propietario ya no existe y el fallo es obsoleto.
Leer descripción completaMostrar menos
Mantener una referencia de runtime PM durante todo el worker de la cola de fallos de página para entregar de forma segura las confirmaciones de VM finalizadas.
v3: - Mover la referencia de PM al worker genérico xe_pagefault_queue_work usando guard(xe_pm_runtime)(xe) en lugar de rastrearla en el backend de GuC (Matt Brost).
v2: - Mantener la referencia de PM durante todo el lote (begin/end) en lugar de por cada confirmación. Así se evita que el dispositivo se suspenda automáticamente a mitad de lote, lo que dejaría confirmaciones write_only escritas pero omitiría el vaciado final, y se omitiría el incremento del contador, desincronizando la comprobación de cadencia (Himal). - Añadir un comentario que explica los fallos obsoletos (Himal).
(cherry picked from commit fcc2431d2213dc4d04250c4f1ae87d9c3ae0d455) [Rodrigo: Added xe_device struct for compatibility while cherry-picking]
Detalles técnicos trazas, registros y código del informe original
Assertion `!xe_pm_runtime_suspended(xe)` failed! WARNING at xe_device.c:1267 xe_device_assert_mem_access+0x11c/0x140 [xe]
Traducción automática del texto original de NVD (en inglés).
CVSS
NVD no ha asignado puntuación CVSS a esta CVE (habitual desde el cambio de política de abril de 2026).
Probabilidad de explotación (EPSS)
- Probabilidad de explotación en los próximos 30 días
- 0.20 %
- Percentil entre todas las CVEs puntuadas
- 9
- Fecha de la puntuación
- 21/10/2026
EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).
Tecnologías afectadas (1)
⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.
Referencias
JSON original (NVD)
Mostrar
{
"id": "CVE-2026-98391",
"cveTags": [],
"metrics": {},
"affected": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"affectedData": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"product": "Linux",
"versions": [
{
"status": "affected",
"version": "f289f7807119128d4f9d59f34ac557549c7562e5",
"lessThan": "25764620ec64c0142e2c87c41787f45540cf09ff",
"versionType": "git"
},
{
"status": "affected",
"version": "f289f7807119128d4f9d59f34ac557549c7562e5",
"lessThan": "20fce5b34b21a995839743b4917a1edd2fd503ba",
"versionType": "git"
}
],
"programFiles": [
"drivers/gpu/drm/xe/xe_pagefault.c",
"drivers/gpu/drm/xe/xe_pagefault_types.h"
],
"defaultStatus": "unaffected"
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"product": "Linux",
"versions": [
{
"status": "affected",
"version": "6.19"
},
{
"status": "unaffected",
"version": "0",
"lessThan": "6.19",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "7.2.7",
"versionType": "semver",
"lessThanOrEqual": "7.2.*"
},
{
"status": "unaffected",
"version": "7.3",
"versionType": "original_commit_for_fix",
"lessThanOrEqual": "*"
}
],
"programFiles": [
"drivers/gpu/drm/xe/xe_pagefault.c",
"drivers/gpu/drm/xe/xe_pagefault_types.h"
],
"defaultStatus": "affected"
}
]
}
],
"published": "2026-10-14T14:17:49.980",
"references": [
{
"url": "https://git.kernel.org/stable/c/20fce5b34b21a995839743b4917a1edd2fd503ba",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/25764620ec64c0142e2c87c41787f45540cf09ff",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
],
"vulnStatus": "Received",
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/xe: Guard page-fault worker with runtime PM check\n\nDuring VM teardown, the VM's runtime PM reference is dropped\nasynchronously, allowing the device to autosuspend while stale page\nfaults belonging to the now-dead VM are still queued. When the\npage-fault worker later tries to ack one of these, it calls into\nguc_ct_send_locked() on an already-suspended device, tripping:\n\n Assertion `!xe_pm_runtime_suspended(xe)` failed!\n WARNING at xe_device.c:1267 xe_device_assert_mem_access+0x11c/0x140 [xe]\n\nA live VM/exec queue always holds a PM reference while it has\noutstanding work, so if the device is suspended at ack time, the\nowning context is already gone and the fault is stale.\n\nTake a runtime PM reference across the entire pagefault\nqueue worker to safely deliver acks for torn-down VMs.\n\nv3:\n - Move PM ref to the generic xe_pagefault_queue_work using\n guard(xe_pm_runtime)(xe) instead of tracking it in the GuC\n backend(Matt Brost).\n\nv2:\n - Hold PM ref across the entire batch (begin/end) instead of per-ack.\n This prevents the device from autosuspending mid-batch, which would\n leave write_only acks written but the end flush skipped, and skip\n counter++, desyncing the cadence check.(Himal)\n - Add a comment explaining stale faults.(Himal)\n\n(cherry picked from commit fcc2431d2213dc4d04250c4f1ae87d9c3ae0d455)\n[Rodrigo: Added xe_device struct for compatibility while cherry-picking]"
}
],
"lastModified": "2026-10-19T10:18:42.400",
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}