CVE-2026-90322
In the Linux kernel, the following vulnerability has been resolved:
ocfs2/cluster: keep heartbeat local node stable
o2nm_node_local_store() handles local=0 by stopping o2net and setting cl_local_node to O2NM_INVALID_NODE_NUM, but it leaves cl_has_local set. That stale state makes o2nm_this_node() return 255, blocks a later local=1 attempt with -EBUSY, and can feed 255 to heartbeat users that call o2nm_this_node() dynamically.
Clearing cl_has_local is required when the local node is reset. But heartbeat threads can still be running at that point.
Leer descripción completaMostrar menos
They pin the local node config item at startup, yet o2hb_do_disk_heartbeat() and thread teardown re-read o2nm_this_node() for the local slot and for o2nm_undepend_this_node(). Once local=0 has cleared the live local-node state, those dynamic reads return O2NM_MAX_NODES, which is also the invalid node number 255.
Store the local node number in the heartbeat region when the region starts. Use that stable node for heartbeat slot writes/checks, negotiation messages, and the final configfs undepend. Stop the heartbeat loop when the current local node no longer matches the stored node, and clear cl_has_local together with cl_local_node in the local=0 path so nodemanager state matches node removal.
Detalles técnicos trazas, registros y código del informe original
Validation reproduced this kernel report: KASAN slab-out-of-bounds in o2hb_do_disk_heartbeat+0x372/0xb30 RIP: 0010:memset+0xf/0x20 Read of size 8 Call trace: dump_stack_lvl+0x66/0xa0 print_report+0xd0/0x630 o2hb_do_disk_heartbeat+0x372/0xb30 (fs/ocfs2/cluster/heartbeat.c:1079) srso_alias_return_thunk+0x5/0xfbef5 __virt_addr_valid+0x188/0x2f0 kasan_report+0xe4/0x120 o2hb_do_disk_heartbeat+0x5/0xb30 (fs/ocfs2/cluster/heartbeat.c:1079) o2hb_thread+0x14e/0x770 kthread_affine_node+0x139/0x180 lockdep_hardirqs_on_prepare+0xda/0x190 trace_hardirqs_on+0x18/0x130 kthread+0x19d/0x1e0 ret_from_fork+0x37a/0x4d0 __switch_to+0x2d5/0x6f0 ret_from_fork_asm+0x1a/0x30
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.21%
- Percentil entre todas las CVEs puntuadas: 10
- Fecha de la puntuación: 6/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-90322",
"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": "a7f6a5fb4bde142b622706e2006ba33f793e13ed",
"lessThan": "8e5cb90f212fda9f6cd29915a1ed74353108ceb3",
"versionType": "git"
},
{
"status": "affected",
"version": "a7f6a5fb4bde142b622706e2006ba33f793e13ed",
"lessThan": "8abb2b7c60d2b2c0f40606048c873096c03874d2",
"versionType": "git"
},
{
"status": "affected",
"version": "a7f6a5fb4bde142b622706e2006ba33f793e13ed",
"lessThan": "70d7bb7a0be033e5ebe8a2c48974692b1318891c",
"versionType": "git"
},
{
"status": "affected",
"version": "a7f6a5fb4bde142b622706e2006ba33f793e13ed",
"lessThan": "688bc88e2046dd6ce81ce18079b5254cb8dadc0e",
"versionType": "git"
}
],
"programFiles": [
"fs/ocfs2/cluster/heartbeat.c",
"fs/ocfs2/cluster/nodemanager.c",
"fs/ocfs2/cluster/nodemanager.h"
],
"defaultStatus": "unaffected"
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"product": "Linux",
"versions": [
{
"status": "affected",
"version": "2.6.16"
},
{
"status": "unaffected",
"version": "0",
"lessThan": "2.6.16",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "6.12.110",
"versionType": "semver",
"lessThanOrEqual": "6.12.*"
},
{
"status": "unaffected",
"version": "6.18.52",
"versionType": "semver",
"lessThanOrEqual": "6.18.*"
},
{
"status": "unaffected",
"version": "7.2.6",
"versionType": "semver",
"lessThanOrEqual": "7.2.*"
},
{
"status": "unaffected",
"version": "7.3-rc1",
"versionType": "original_commit_for_fix",
"lessThanOrEqual": "*"
}
],
"programFiles": [
"fs/ocfs2/cluster/heartbeat.c",
"fs/ocfs2/cluster/nodemanager.c",
"fs/ocfs2/cluster/nodemanager.h"
],
"defaultStatus": "affected"
}
]
}
],
"published": "2026-09-17T17:17:30.173",
"references": [
{
"url": "https://git.kernel.org/stable/c/688bc88e2046dd6ce81ce18079b5254cb8dadc0e",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/70d7bb7a0be033e5ebe8a2c48974692b1318891c",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/8abb2b7c60d2b2c0f40606048c873096c03874d2",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/8e5cb90f212fda9f6cd29915a1ed74353108ceb3",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
],
"vulnStatus": "Received",
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nocfs2/cluster: keep heartbeat local node stable\n\no2nm_node_local_store() handles local=0 by stopping o2net and setting\ncl_local_node to O2NM_INVALID_NODE_NUM, but it leaves cl_has_local set. \nThat stale state makes o2nm_this_node() return 255, blocks a later local=1\nattempt with -EBUSY, and can feed 255 to heartbeat users that call\no2nm_this_node() dynamically.\n\nClearing cl_has_local is required when the local node is reset. But\nheartbeat threads can still be running at that point. They pin the local\nnode config item at startup, yet o2hb_do_disk_heartbeat() and thread\nteardown re-read o2nm_this_node() for the local slot and for\no2nm_undepend_this_node(). Once local=0 has cleared the live local-node\nstate, those dynamic reads return O2NM_MAX_NODES, which is also the\ninvalid node number 255.\n\nStore the local node number in the heartbeat region when the region\nstarts. Use that stable node for heartbeat slot writes/checks,\nnegotiation messages, and the final configfs undepend. Stop the heartbeat\nloop when the current local node no longer matches the stored node, and\nclear cl_has_local together with cl_local_node in the local=0 path so\nnodemanager state matches node removal.\n\nValidation reproduced this kernel report:\nKASAN slab-out-of-bounds in o2hb_do_disk_heartbeat+0x372/0xb30\nRIP: 0010:memset+0xf/0x20\nRead of size 8\nCall trace:\n dump_stack_lvl+0x66/0xa0\n print_report+0xd0/0x630\n o2hb_do_disk_heartbeat+0x372/0xb30 (fs/ocfs2/cluster/heartbeat.c:1079)\n srso_alias_return_thunk+0x5/0xfbef5\n __virt_addr_valid+0x188/0x2f0\n kasan_report+0xe4/0x120\n o2hb_do_disk_heartbeat+0x5/0xb30 (fs/ocfs2/cluster/heartbeat.c:1079)\n o2hb_thread+0x14e/0x770\n kthread_affine_node+0x139/0x180\n lockdep_hardirqs_on_prepare+0xda/0x190\n trace_hardirqs_on+0x18/0x130\n kthread+0x19d/0x1e0\n ret_from_fork+0x37a/0x4d0\n __switch_to+0x2d5/0x6f0\n ret_from_fork_asm+0x1a/0x30"
}
],
"lastModified": "2026-09-17T17:17:30.173",
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}