parisc: Fix random data corruption from exception handler
Summary
| CVE | CVE-2024-26706 |
|---|---|
| State | PUBLISHED |
| Assigner | Linux |
| Source Priority | CVE Program / NVD first with legacy fallback |
| Published | 2024-04-03 15:15:53 UTC |
| Updated | 2026-08-04 11:16:57 UTC |
| Description | In the Linux kernel, the following vulnerability has been resolved: parisc: Fix random data corruption from exception handler The current exception handler implementation, which assists when accessing user space memory, may exhibit random data corruption if the compiler decides to use a different register than the specified register %r29 (defined in ASM_EXCEPTIONTABLE_REG) for the error code. If the compiler choose another register, the fault handler will nevertheless store -EFAULT into %r29 and thus trash whatever this register is used for. Looking at the assembly I found that this happens sometimes in emulate_ldd(). To solve the issue, the easiest solution would be if it somehow is possible to tell the fault handler which register is used to hold the error code. Using %0 or %1 in the inline assembly is not posssible as it will show up as e.g. %r29 (with the "%r" prefix), which the GNU assembler can not convert to an integer. This patch takes another, better and more flexible approach: We extend the __ex_table (which is out of the execution path) by one 32-word. In this word we tell the compiler to insert the assembler instruction "or %r0,%r0,%reg", where %reg references the register which the compiler choosed for the error return code. In case of an access failure, the fault handler finds the __ex_table entry and can examine the opcode. The used register is encoded in the lowest 5 bits, and the fault handler can then store -EFAULT into this register. Since we extend the __ex_table to 3 words we can't use the BUILDTIME_TABLE_SORT config option any longer. |
Risk And Classification
Primary CVSS: v3.1 5.5 MEDIUM from [email protected]
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Problem Types: CWE-787
| Version | Source | Type | Score | Severity | Vector |
|---|---|---|---|---|---|
| 3.1 | [email protected] | Primary | 5.5 | MEDIUM | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
| 3.1 | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | Secondary | 7.8 | HIGH | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| 3.1 | CNA | DECLARED | 7.8 | HIGH | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
CVSS v3.1 Breakdown
Attack Vector
LocalAttack Complexity
LowPrivileges Required
LowUser Interaction
NoneScope
UnchangedConfidentiality
NoneIntegrity
NoneAvailability
HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
NVD Known Affected Configurations (CPE 2.3)
| Type | Vendor | Product | Version | Update | Edition | Language |
|---|---|---|---|---|---|---|
| Operating System | Linux | Linux Kernel | All | All | All | All |
Vendor Declared Affected Products
| Source | Vendor | Product | Version | Platforms |
|---|---|---|---|---|
| CNA | Linux | Linux | affected d19f5e41b344a057bb2450024a807476f30978d2 23027309b099ffc4efca5477009a11dccbdae592 git | Not specified |
| CNA | Linux | Linux | affected d19f5e41b344a057bb2450024a807476f30978d2 fa69a8063f8b27f3c7434a0d4f464a76a62f24d2 git | Not specified |
| CNA | Linux | Linux | affected d19f5e41b344a057bb2450024a807476f30978d2 ce31d79aa1f13a2345791f84935281a2c194e003 git | Not specified |
| CNA | Linux | Linux | affected d19f5e41b344a057bb2450024a807476f30978d2 8b1d72395635af45410b66cc4c4ab37a12c4a831 git | Not specified |
| CNA | Linux | Linux | affected 09b931fcb87c8aad178475a7db1d4bfc939f7faa git | Not specified |
| CNA | Linux | Linux | affected 37e6234297379e0db25e39c2ca99776fea70026c git | Not specified |
| CNA | Linux | Linux | affected 4.9.21 4.10 semver | Not specified |
| CNA | Linux | Linux | affected 4.10.9 4.11 semver | Not specified |
| CNA | Linux | Linux | affected 4.11 | Not specified |
| CNA | Linux | Linux | unaffected 4.11 semver | Not specified |
| CNA | Linux | Linux | unaffected 6.1.79 6.1.* semver | Not specified |
| CNA | Linux | Linux | unaffected 6.6.18 6.6.* semver | Not specified |
| CNA | Linux | Linux | unaffected 6.7.6 6.7.* semver | Not specified |
| CNA | Linux | Linux | unaffected 6.8 * original_commit_for_fix | Not specified |
References
| Reference | Source | Link | Tags |
|---|---|---|---|
| git.kernel.org/stable/c/fa69a8063f8b27f3c7434a0d4f464a76a62f24d2 | af854a3a-2127-422b-91ae-364da2661108 | git.kernel.org | Patch |
| git.kernel.org/stable/c/8b1d72395635af45410b66cc4c4ab37a12c4a831 | af854a3a-2127-422b-91ae-364da2661108 | git.kernel.org | Patch |
| git.kernel.org/stable/c/ce31d79aa1f13a2345791f84935281a2c194e003 | af854a3a-2127-422b-91ae-364da2661108 | git.kernel.org | Patch |
| git.kernel.org/stable/c/23027309b099ffc4efca5477009a11dccbdae592 | af854a3a-2127-422b-91ae-364da2661108 | git.kernel.org | Patch |
| CVE Program record | CVE.ORG | www.cve.org | canonical |
| NVD vulnerability detail | NVD | nvd.nist.gov | canonical, analysis |
No vendor comments have been submitted for this CVE.
Legacy QID Mappings
- 6000567 Debian Security Update for linux (DSA 5658-1)