{
  "affected": [
    {
      "ecosystem_specific": {
        "urgency": "not yet assigned"
      },
      "package": {
        "ecosystem": "Debian:13",
        "name": "linux"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    },
    {
      "ecosystem_specific": {
        "urgency": "not yet assigned"
      },
      "package": {
        "ecosystem": "Debian:14",
        "name": "linux"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "7.2.8-1"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "details": "In the Linux kernel, the following vulnerability has been resolved:  hwmon: (hp-wmi-sensors) Fix use-after-free in fungible_show()  nsensor-\u003ecurrent_state is dynamically replaced as the sensor's state changes. update_numeric_sensor_from_wobj() does this by freeing the old string and installing a new one:  \tif (strcmp(trimmed, nsensor-\u003ecurrent_state)) { \t\tnew_string = hp_wmi_strdup(dev, trimmed); \t\tif (new_string) { \t\t\tdevm_kfree(dev, nsensor-\u003ecurrent_state); \t\t\tnsensor-\u003ecurrent_state = new_string; \t\t} \t}  This function is only ever called from hp_wmi_update_info() while state-\u003elock is held, so the free-and-replace itself is properly serialized against concurrent updates.  fungible_show(), however, reads the same pointer after the lock has already been dropped:  \terr = hp_wmi_update_info(state, info); \tif (err) \t\treturn err;  \tswitch (prop) { \t... \tcase HP_WMI_PROPERTY_CURRENT_STATE: \t\tseq_printf(seqf, \"%s\\n\", nsensor-\u003ecurrent_state); \t\tbreak;  hp_wmi_update_info() takes state-\u003elock internally and releases it before returning, so by the time fungible_show() dereferences nsensor-\u003ecurrent_state in seq_printf(), no lock is held. Two processes reading a sensor's current_state debugfs entry at overlapping times (or one reading it while another read of the same sensor triggers a refresh) can race: one thread's seq_printf() can be part-way through printing the string at the moment another thread's call into update_numeric_sensor_from_wobj() frees it with devm_kfree() and installs a new pointer, causing a use-after-free read.  Take state-\u003elock around the read in fungible_show() as well, so it can never run concurrently with the free-and-replace in update_numeric_sensor_from_wobj().",
  "id": "DEBIAN-CVE-2026-98200",
  "modified": "2026-10-07T04:47:39.967102644Z",
  "published": "2026-10-06T09:18:05.747Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://security-tracker.debian.org/tracker/CVE-2026-98200"
    }
  ],
  "upstream": [
    "CVE-2026-98200"
  ]
}