CVE-2026-80745 (GCVE-0-2026-80745)

Vulnerability from cvelistv5 – Published: 2026-09-03 08:26 – Updated: 2026-09-04 04:58
VLAI
Title
regulator: fp9931: Fix VPOS/VNEG voltage selector table
Summary
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).
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 12d821bd13d42e6de3ecb1c13918b1f06a3ee213 , < 92a9594053831bf4c5886519688e155912befaee (git)
Affected: 12d821bd13d42e6de3ecb1c13918b1f06a3ee213 , < 66694b5f90f3876fccb87bbd02b453cdc33b3ae4 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.19
Unaffected: 0 , < 6.19 (semver)
Unaffected: 7.1.10 , ≤ 7.1.* (semver)
Unaffected: 7.2 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/regulator/fp9931.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "92a9594053831bf4c5886519688e155912befaee",
              "status": "affected",
              "version": "12d821bd13d42e6de3ecb1c13918b1f06a3ee213",
              "versionType": "git"
            },
            {
              "lessThan": "66694b5f90f3876fccb87bbd02b453cdc33b3ae4",
              "status": "affected",
              "version": "12d821bd13d42e6de3ecb1c13918b1f06a3ee213",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/regulator/fp9931.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.19"
            },
            {
              "lessThan": "6.19",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.1.*",
              "status": "unaffected",
              "version": "7.1.10",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.2",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1.10",
                  "versionStartIncluding": "6.19",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2",
                  "versionStartIncluding": "6.19",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nregulator: fp9931: Fix VPOS/VNEG voltage selector table\n\nThe VPOSNEG_table[] mapping does not match the FP9931 datasheet.\n\nThe datasheet defines the VPOS/VNEG voltage mapping as:\n\n  00h-04h -\u003e  7.04V (-7.04V)\n  05h     -\u003e  7.26V (-7.26V)\n  06h     -\u003e  7.49V (-7.49V)\n  ...\n  28h-3Fh -\u003e 15.06V (-15.06V)\n\nHowever, VPOSNEG_table[] has two issues:\n\n1. Selector 0x00~0x04 should all map to 7.04V (5 entries), but the\n   table has 6 entries of 7.04V, causing all subsequent entries to be\n   shifted by one position.\n\n2. Selectors 0x29~0x3F should all clamp to 15.06V (23 entries), but\n   the table has only 41 entries. Any selector value above 0x28\n   would result in an out-of-bounds table access.\n\nFix both issues by removing the duplicate 7.04V entry and appending\nthe missing 23 clamped 15.06V entries, bringing the table to the\ncorrect size of 64 entries (0x00~0x3F)."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 8.4,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The flaw is in the FP9931/JD9930 I2C EPD PMIC driver reached only via local regulator core paths (regulator_set_voltage, get_voltage_sel, map_voltage_ascend/list_voltage_table) during probe and display power management; there is no network, Bluetooth, or physical-bus attack surface to this code.\nAC:L - On affected e-reader hardware the undersized VPOSNEG_table (41 vs 64 hardware selectors with vsel_mask 0x3F) makes selector values above 0x28 deterministically index past the table whenever map_voltage or list_voltage processes those selectors; no race or attacker-uncontrollable memory layout is required.\nPR:N - Regulator constraint application during fp9931_probe and automatic EPD/display regulator enable paths run at boot and during normal framebuffer updates without authentication; no CAP_SYS_ADMIN, init-namespace root, or special capability is checked before reaching the vulnerable voltage-mapping code.\nUI:N - Once the FP9931 PMIC is present, voltage selection is driven by kernel probe and display refresh without requiring a victim to mount a filesystem, click a link, or perform any cooperative action beyond normal device operation.\nS:U - Impact is confined to kernel memory reads and PMIC voltage programming within the host kernel security boundary on embedded e-reader platforms; this is not a VM escape, IOMMU bypass, or cross-container authority change.\nC:H - Out-of-bounds indexing of VPOSNEG_table[] in regulator_list_voltage_table reads adjacent kernel .rodata beyond the 41-entry array when selectors 0x29-0x3F are processed; out-of-bounds kernel reads are rated High per CVSS kernel guidance.\nI:H - The shifted voltage table causes regulator_map_voltage_ascend to select wrong VPOS/VNEG selectors written to PMIC registers (up to \u00b115.06V rails), and OOB table reads can return attacker-influencing values used for subsequent voltage programming, enabling incorrect high-voltage output.\nA:H - Out-of-bounds table access in kernel context can trigger oops or panic on misaligned rodata boundaries, and programming incorrect \u00b115V EPD rail voltages can hang, reset, or permanently damage display power hardware, matching High availability impact guidance."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-04T04:58:25.988Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/92a9594053831bf4c5886519688e155912befaee"
        },
        {
          "url": "https://git.kernel.org/stable/c/66694b5f90f3876fccb87bbd02b453cdc33b3ae4"
        }
      ],
      "title": "regulator: fp9931: Fix VPOS/VNEG voltage selector table",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-80745",
    "datePublished": "2026-09-03T08:26:27.739Z",
    "dateReserved": "2026-08-26T14:34:25.790Z",
    "dateUpdated": "2026-09-04T04:58:25.988Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-80745",
      "date": "2026-09-21",
      "epss": "0.00122",
      "percentile": "0.02295"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/regulator/fp9931.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "92a9594053831bf4c5886519688e155912befaee",
                    "status": "affected",
                    "version": "12d821bd13d42e6de3ecb1c13918b1f06a3ee213",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "66694b5f90f3876fccb87bbd02b453cdc33b3ae4",
                    "status": "affected",
                    "version": "12d821bd13d42e6de3ecb1c13918b1f06a3ee213",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/regulator/fp9931.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.19"
                  },
                  {
                    "lessThan": "6.19",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.1.*",
                    "status": "unaffected",
                    "version": "7.1.10",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.2",
                    "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\nregulator: fp9931: Fix VPOS/VNEG voltage selector table\n\nThe VPOSNEG_table[] mapping does not match the FP9931 datasheet.\n\nThe datasheet defines the VPOS/VNEG voltage mapping as:\n\n  00h-04h -\u003e  7.04V (-7.04V)\n  05h     -\u003e  7.26V (-7.26V)\n  06h     -\u003e  7.49V (-7.49V)\n  ...\n  28h-3Fh -\u003e 15.06V (-15.06V)\n\nHowever, VPOSNEG_table[] has two issues:\n\n1. Selector 0x00~0x04 should all map to 7.04V (5 entries), but the\n   table has 6 entries of 7.04V, causing all subsequent entries to be\n   shifted by one position.\n\n2. Selectors 0x29~0x3F should all clamp to 15.06V (23 entries), but\n   the table has only 41 entries. Any selector value above 0x28\n   would result in an out-of-bounds table access.\n\nFix both issues by removing the duplicate 7.04V entry and appending\nthe missing 23 clamped 15.06V entries, bringing the table to the\ncorrect size of 64 entries (0x00~0x3F)."
          }
        ],
        "id": "CVE-2026-80745",
        "lastModified": "2026-09-04T05:17:14.570",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 8.4,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "NONE",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 2.5,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-09-03T13:06:14.007",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/66694b5f90f3876fccb87bbd02b453cdc33b3ae4"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/92a9594053831bf4c5886519688e155912befaee"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

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.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

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.


Loading…