HIGH Introduced in 6.19
regulator fp9931 VoltageTable OOB
CVE-2026-80745
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
KernelScan AI7.1HIGH
01Description
In the Linux kernel, the following vulnerability has been resolved: regulator: fp9931: Fix VPOS/VNEG voltage selector table The VPOSNEG_table[] mapping does not match the FP9931 datasheet. The datasheet defines the VPOS/VNEG voltage mapping as: 00h-04h -> 7.04V (-7.04V) 05h -> 7.26V (-7.26V) 06h -> 7.49V (-7.49V) ... 28h-3Fh -> 15.06V (-15.06V) However, VPOSNEG_table[] has two issues: 1. Selector 0x00~0x04 should all map to 7.04V (5 entries), but the table has 6 entries of 7.04V, causing all subsequent entries to be shifted by one position. 2. Selectors 0x29~0x3F should all clamp to 15.06V (23 entries), but the table has only 41 entries. Any selector value above 0x28 would result in an out-of-bounds table access. Fix both issues by removing the duplicate 7.04V entry and appending the missing 23 clamped 15.06V entries, bringing the table to the correct size of 64 entries (0x00~0x3F).
02KernelScan AI Analysis
Risk summary
A regulator driver for the FP9931/JD9930 chip has an undersized voltage lookup table, so selector values above 0x28 cause an out-of-bounds array access. A local user who can configure the regulator (typically via sysfs or a hardware management path) can trigger incorrect voltage programming or kernel memory disclosure/corruption. The fix resizes the table to the full 64-entry range defined by the datasheet.
Vulnerability analysis
The voltage selector table for the VPOS/VNEG regulators is too short and misaligned with the hardware datasheet: it has a duplicate low-voltage entry that shifts all subsequent mappings by one position, and it lacks the 23 trailing entries that should clamp selectors 0x29–0x3F to the maximum voltage. When the regulator core looks up a selector at or above the table's end, it reads past the array boundary. The patch removes the duplicate entry and appends the missing clamped entries so the table covers all 64 selector values (0x00–0x3F). The vulnerable path is reachable locally by any process that can request a voltage change on the affected regulator, which on most deployments requires a privileged management daemon or root-level access to the regulator sysfs interface.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| mainline | 6.19 | 7.2 | 66694b5f90f3 |
| 7.1 | 6.19 | 7.1.10 | 92a959405383 |