FKIE_CVE-2026-98745
Vulnerability from fkie_nvd - Published: 2026-10-18 16:17 - Updated: 2026-10-30 13:21
Severity
Summary
In the Linux kernel, the following vulnerability has been resolved:
arm64/fpsimd: signal: Forbid non-streaming SVE payload on SME-only systems
When system_supports_sme() is true but system_supports_sve() is false,
restoring a specifically crafted SVE signal context can result in the
task erroneously having non-streaming SVE state. Subsequent attempts to
manipulate the task's FPSIMD/SVE/SME state can result in a variety of
problems, including fatal EL1 UNDEFs.
In such configurations, the kernel always creates an SVE signal context
when delivering a signal, and this can only be in one of two states:
(1) SVE_SIG_FLAG_SM is set, and an SVE payload is present containing
streaming mode SVE state. The recorded VL is the task's live
streaming VL.
(2) SVE_SIG_FLAG_SM is clear, and an SVE payload is not present. The
FPSIMD context contains the non-streaming mode FPSIMD state. The
recorded VL is 0.
Currently restore_sve_fpsimd_context() correctly rejects cases where
SVE_SIG_FLAG_SM is set and an SVE payload is not present, but fails to
reject cases where SVE_SIG_FLAG_SM is clear and an SVE payload is
present. Consequently, restore_sve_fpsimd_context() can place the task
in a state where it has non-streaming SVE state even when this is not
supported by HW.
For example, this can cause a later EL1 UNDEF when the kernel attempts to
restore the task's ZCR_EL1 value:
| # ./sme-sigcontext-to-sve
| Internal error: Oops - Undefined instruction: 0000000002000000 [#1] SMP
| Modules linked in:
| CPU: 0 UID: 0 PID: 131 Comm: sme-sigcontext- Not tainted 7.3.0-rc1 #1 PREEMPT
| Hardware name: linux,dummy-virt (DT)
| pstate: 61402009 (nZCv daif +PAN -UAO -TCO +DIT -SSBS BTYPE=--)
| pc : fpsimd_restore_current_state+0x258/0x458
| lr : exit_to_user_mode_loop+0xb8/0x188
| sp : ffff80008056be40
| x29: ffff80008056be40 x28: fff00000c1670000 x27: 0000000000000000
| x26: 0000000000000000 x25: 0000000000000000 x24: 0000000000000000
| x23: ffff80008056bec0 x22: 0000000000000008 x21: 0000000000000040
| x20: 0000000000000081 x19: 0000000008800010 x18: 0000000000000000
| x17: 0000fffffd412570 x16: 0000000000001000 x15: 0000fffffd4123b0
| x14: 0000fffffd412780 x13: 0000fffffd412be8 x12: 0000000047435300
| x11: 0000fffffd412570 x10: 0000000000000000 x9 : 0000000045585401
| x8 : fff00000c18a6c44 x7 : 0000000000000000 x6 : 0000000000000002
| x5 : 0000000000000002 x4 : ffff800080568000 x3 : 0000000000000001
| x2 : 0000000008800010 x1 : fff00000c1670000 x0 : 0000000008800000
| Call trace:
| fpsimd_restore_current_state+0x258/0x458 (P)
| exit_to_user_mode_loop+0xb8/0x188
| el0_svc+0x1cc/0x1d0
| el0t_64_sync_handler+0xa0/0xe4
| el0t_64_sync+0x198/0x19c
| Code: d5384101 f9400020 53175c03 36b80de0 (d5381202)
| ---[ end trace 0000000000000000 ]---
| Kernel panic - not syncing: Oops - Undefined instruction: Fatal exception in interrupt
| Kernel Offset: 0x291fb1000000 from 0xffff800080000000
| PHYS_OFFSET: 0x40000000
| CPU features: 0x0,00000000,0052802f,ffb88f43,3afcf73f
| Memory Limit: none
Rework restore_sve_fpsimd_context() to reject cases where
SVE_SIG_FLAG_SM is clear and an SVE payload is not present. As
parse_user_sigframe() rejects SVE signal frames when neither SVE nor SME
are supported, it isn't necessary for restore_sve_fpsimd_context() to
handle the case where neither are supported.
References
Impacted products
| Vendor | Product | Version |
|---|
{
"affected": [
{
"affectedData": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"arch/arm64/kernel/signal.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "6c5b3ec340921617d965b7c87959560e886e778f",
"status": "affected",
"version": "05458ee3ff82b31a4564836a84ef20d6c233dfc7",
"versionType": "git"
},
{
"lessThan": "052acee9880114879b5c221fc8dad69b786d0938",
"status": "affected",
"version": "7dde62f0687c8856b6c0660066c7ee83a6a6f033",
"versionType": "git"
},
{
"lessThan": "f2338929c7663859c0c74dd6fef2c0245066f845",
"status": "affected",
"version": "7dde62f0687c8856b6c0660066c7ee83a6a6f033",
"versionType": "git"
},
{
"lessThan": "2bce6f006cfe0b60e8249fd8d51396d99355cba3",
"status": "affected",
"version": "7dde62f0687c8856b6c0660066c7ee83a6a6f033",
"versionType": "git"
},
{
"lessThan": "88c1c611552b24658eb61244086691c02be2013b",
"status": "affected",
"version": "7dde62f0687c8856b6c0660066c7ee83a6a6f033",
"versionType": "git"
},
{
"lessThan": "e060d9069b49fe55f38057dfe592068014652671",
"status": "affected",
"version": "7dde62f0687c8856b6c0660066c7ee83a6a6f033",
"versionType": "git"
},
{
"lessThan": "6.1.191",
"status": "affected",
"version": "6.1.7",
"versionType": "semver"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"arch/arm64/kernel/signal.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "6.2"
},
{
"lessThan": "6.2",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"version": "6.1.191",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"version": "6.6.160",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.113",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.56",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.2.*",
"status": "unaffected",
"version": "7.2.10",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.3",
"versionType": "original_commit_for_fix"
}
]
}
],
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
],
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\narm64/fpsimd: signal: Forbid non-streaming SVE payload on SME-only systems\n\nWhen system_supports_sme() is true but system_supports_sve() is false,\nrestoring a specifically crafted SVE signal context can result in the\ntask erroneously having non-streaming SVE state. Subsequent attempts to\nmanipulate the task\u0027s FPSIMD/SVE/SME state can result in a variety of\nproblems, including fatal EL1 UNDEFs.\n\nIn such configurations, the kernel always creates an SVE signal context\nwhen delivering a signal, and this can only be in one of two states:\n\n(1) SVE_SIG_FLAG_SM is set, and an SVE payload is present containing\n streaming mode SVE state. The recorded VL is the task\u0027s live\n streaming VL.\n\n(2) SVE_SIG_FLAG_SM is clear, and an SVE payload is not present. The\n FPSIMD context contains the non-streaming mode FPSIMD state. The\n recorded VL is 0.\n\nCurrently restore_sve_fpsimd_context() correctly rejects cases where\nSVE_SIG_FLAG_SM is set and an SVE payload is not present, but fails to\nreject cases where SVE_SIG_FLAG_SM is clear and an SVE payload is\npresent. Consequently, restore_sve_fpsimd_context() can place the task\nin a state where it has non-streaming SVE state even when this is not\nsupported by HW.\n\nFor example, this can cause a later EL1 UNDEF when the kernel attempts to\nrestore the task\u0027s ZCR_EL1 value:\n\n| # ./sme-sigcontext-to-sve\n| Internal error: Oops - Undefined instruction: 0000000002000000 [#1] SMP\n| Modules linked in:\n| CPU: 0 UID: 0 PID: 131 Comm: sme-sigcontext- Not tainted 7.3.0-rc1 #1 PREEMPT\n| Hardware name: linux,dummy-virt (DT)\n| pstate: 61402009 (nZCv daif +PAN -UAO -TCO +DIT -SSBS BTYPE=--)\n| pc : fpsimd_restore_current_state+0x258/0x458\n| lr : exit_to_user_mode_loop+0xb8/0x188\n| sp : ffff80008056be40\n| x29: ffff80008056be40 x28: fff00000c1670000 x27: 0000000000000000\n| x26: 0000000000000000 x25: 0000000000000000 x24: 0000000000000000\n| x23: ffff80008056bec0 x22: 0000000000000008 x21: 0000000000000040\n| x20: 0000000000000081 x19: 0000000008800010 x18: 0000000000000000\n| x17: 0000fffffd412570 x16: 0000000000001000 x15: 0000fffffd4123b0\n| x14: 0000fffffd412780 x13: 0000fffffd412be8 x12: 0000000047435300\n| x11: 0000fffffd412570 x10: 0000000000000000 x9 : 0000000045585401\n| x8 : fff00000c18a6c44 x7 : 0000000000000000 x6 : 0000000000000002\n| x5 : 0000000000000002 x4 : ffff800080568000 x3 : 0000000000000001\n| x2 : 0000000008800010 x1 : fff00000c1670000 x0 : 0000000008800000\n| Call trace:\n| fpsimd_restore_current_state+0x258/0x458 (P)\n| exit_to_user_mode_loop+0xb8/0x188\n| el0_svc+0x1cc/0x1d0\n| el0t_64_sync_handler+0xa0/0xe4\n| el0t_64_sync+0x198/0x19c\n| Code: d5384101 f9400020 53175c03 36b80de0 (d5381202)\n| ---[ end trace 0000000000000000 ]---\n| Kernel panic - not syncing: Oops - Undefined instruction: Fatal exception in interrupt\n| Kernel Offset: 0x291fb1000000 from 0xffff800080000000\n| PHYS_OFFSET: 0x40000000\n| CPU features: 0x0,00000000,0052802f,ffb88f43,3afcf73f\n| Memory Limit: none\n\nRework restore_sve_fpsimd_context() to reject cases where\nSVE_SIG_FLAG_SM is clear and an SVE payload is not present. As\nparse_user_sigframe() rejects SVE signal frames when neither SVE nor SME\nare supported, it isn\u0027t necessary for restore_sve_fpsimd_context() to\nhandle the case where neither are supported."
}
],
"id": "CVE-2026-98745",
"lastModified": "2026-10-30T13:21:23.220",
"metrics": {},
"published": "2026-10-18T16:17:28.237",
"references": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/052acee9880114879b5c221fc8dad69b786d0938"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/2bce6f006cfe0b60e8249fd8d51396d99355cba3"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/6c5b3ec340921617d965b7c87959560e886e778f"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/88c1c611552b24658eb61244086691c02be2013b"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/e060d9069b49fe55f38057dfe592068014652671"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/f2338929c7663859c0c74dd6fef2c0245066f845"
}
],
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"vulnStatus": "Received"
}
Loading…
Loading…
Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.
Experimental. This forecast is provided for visualization only and may change without notice. Do not use it for operational decisions.
Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline
Sightings and recorded dates, grouped by day · UTC
Loading timeline…
Loading…
Loading…
The MITRE ATT&CK techniques below are AI-generated suggestions, inferred from the description of the
vulnerability by the CIRCL/vulnerability-attack-technique-classification-roberta-base
model, served locally by ML-Gateway.
They have not been verified by an analyst and are provided for guidance only.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
Loading…
Related by attack behaviour
Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.