CVE-2026-90211
Full vulnerability record from the local CVENow database.
Description
In the Linux kernel, the following vulnerability has been resolved: bpf, s390: Clear fetch destination on faulting arena atomic Same missing register clear as on riscv64. A RMW atomic on an arena pointer is converted to BPF_PROBE_ATOMIC and gets an exception table entry, but bpf_jit_probe_atomic_pre() only fills in the arena base and the probe offset, leaving probe->reg at the -1 that bpf_jit_probe_init() set, which bpf_jit_probe_post() writes into the entry and ex_handler_bpf() then reads back as "there is nothing to clear". That is right for a plain BPF_{ADD,AND,OR,XOR}, which only writes memory, but an RMW carrying BPF_FETCH also reads the old value into a register: src_reg for BPF_{ADD,AND,OR,XOR} | BPF_FETCH and BPF_XCHG, and r0 for BPF_CMPXCHG. So on a fault over an unmapped arena page the program resumes at the landing pad with whatever that register held before the atomic instead of the 0 that every other BPF_PROBE_* access delivers. Fill probe->reg in from bpf_atomic_load_reg(). Unlike x86-64 and arm64, s390x does not report arena violations from its exception handler, so there is no access direction to correct here, only the missing register clear.
View original CVE JSON
{
"id": "CVE-2026-90211",
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"published": "2026-09-17T17:17:16.330",
"lastModified": "2026-10-19T09:19:11.277",
"vulnStatus": "Received",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nbpf, s390: Clear fetch destination on faulting arena atomic\n\nSame missing register clear as on riscv64. A RMW atomic on an arena pointer\nis converted to BPF_PROBE_ATOMIC and gets an exception table entry, but\nbpf_jit_probe_atomic_pre() only fills in the arena base and the probe\noffset, leaving probe->reg at the -1 that bpf_jit_probe_init() set, which\nbpf_jit_probe_post() writes into the entry and ex_handler_bpf() then reads\nback as \"there is nothing to clear\".\n\nThat is right for a plain BPF_{ADD,AND,OR,XOR}, which only writes memory,\nbut an RMW carrying BPF_FETCH also reads the old value into a register:\nsrc_reg for BPF_{ADD,AND,OR,XOR} | BPF_FETCH and BPF_XCHG, and r0 for\nBPF_CMPXCHG. So on a fault over an unmapped arena page the program resumes\nat the landing pad with whatever that register held before the atomic\ninstead of the 0 that every other BPF_PROBE_* access delivers.\n\nFill probe->reg in from bpf_atomic_load_reg(). Unlike x86-64 and arm64,\ns390x does not report arena violations from its exception handler, so there\nis no access direction to correct here, only the missing register clear."
}
],
"affected": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"affectedData": [
{
"vendor": "Linux",
"product": "Linux",
"defaultStatus": "unaffected",
"programFiles": [
"arch/s390/net/bpf_jit_comp.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"versions": [
{
"version": "2f9469484a3b52c66b799de73bd1ca75617bc8d5",
"lessThan": "44b702fceb4cf3a4ddbfb496f487b034814bf1a3",
"versionType": "git",
"status": "affected"
},
{
"version": "2f9469484a3b52c66b799de73bd1ca75617bc8d5",
"lessThan": "cc3e12330599f097f0e1f792435686ddc276f26d",
"versionType": "git",
"status": "affected"
}
]
},
{
"vendor": "Linux",
"product": "Linux",
"defaultStatus": "affected",
"programFiles": [
"arch/s390/net/bpf_jit_comp.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"versions": [
{
"version": "6.11",
"status": "affected"
},
{
"version": "0",
"lessThan": "6.11",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "7.2.6",
"lessThanOrEqual": "7.2.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "7.3",
"lessThanOrEqual": "*",
"versionType": "original_commit_for_fix",
"status": "unaffected"
}
]
}
]
}
],
"metrics": {},
"references": [
{
"url": "https://git.kernel.org/stable/c/44b702fceb4cf3a4ddbfb496f487b034814bf1a3",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/cc3e12330599f097f0e1f792435686ddc276f26d",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
]
}