← Back to CVE Explorer

CVE-2026-90178

Full vulnerability record from the local CVENow database.

Description

In the Linux kernel, the following vulnerability has been resolved: hwmon: (coretemp) Fix core_data leak on CPUs without PTS pdata->core_data is allocated in init_temp_data() when the first core temp_data of a package is created, but it is only released from destroy_temp_data(), and only in the branch that handles the package temp_data. Package temp_data is created solely when the CPU supports X86_FEATURE_PTS. On a CPU without it, coretemp_cpu_online() never calls coretemp_add_core() with pkg_flag set, so pdata->pkg_data stays NULL. coretemp_cpu_offline() then skips the removal of the package interface, destroy_temp_data() is never called for package data, and the array is still allocated when coretemp_device_remove() frees the platform data that pointed at it. Release the array in coretemp_device_remove(). destroy_temp_data() sets pdata->core_data to NULL when it frees it, so the added kfree() is a no-op on CPUs that do have PTS. Tested on an Intel Core i5-1135G7. The driver was instrumented to log every allocation and release of pdata->core_data, and the PTS check in coretemp_cpu_online() was patched out to emulate a CPU without package thermal support. Without this change the array was allocated and never released, and coretemp_device_remove() still saw a non-NULL pointer. With it the array is released and the pointer accounting balances. On an unmodified build the release still happens via the package temp_data and the added kfree() sees NULL, with no slab warnings over repeated module load and unload cycles.

Severity
Not scored
CVSS score
Not available
Vulnerability status
Received
Source identifier
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Published
2026-09-17 17:17:11.807000
Last modified
2026-10-19 09:19:07.800000
View original CVE JSON
{
  "id": "CVE-2026-90178",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
  "published": "2026-09-17T17:17:11.807",
  "lastModified": "2026-10-19T09:19:07.800",
  "vulnStatus": "Received",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nhwmon: (coretemp) Fix core_data leak on CPUs without PTS\n\npdata->core_data is allocated in init_temp_data() when the first core\ntemp_data of a package is created, but it is only released from\ndestroy_temp_data(), and only in the branch that handles the package\ntemp_data.\n\nPackage temp_data is created solely when the CPU supports\nX86_FEATURE_PTS. On a CPU without it, coretemp_cpu_online() never calls\ncoretemp_add_core() with pkg_flag set, so pdata->pkg_data stays NULL.\ncoretemp_cpu_offline() then skips the removal of the package interface,\ndestroy_temp_data() is never called for package data, and the array is\nstill allocated when coretemp_device_remove() frees the platform data\nthat pointed at it.\n\nRelease the array in coretemp_device_remove(). destroy_temp_data() sets\npdata->core_data to NULL when it frees it, so the added kfree() is a\nno-op on CPUs that do have PTS.\n\nTested on an Intel Core i5-1135G7. The driver was instrumented to log\nevery allocation and release of pdata->core_data, and the PTS check in\ncoretemp_cpu_online() was patched out to emulate a CPU without package\nthermal support. Without this change the array was allocated and never\nreleased, and coretemp_device_remove() still saw a non-NULL pointer.\nWith it the array is released and the pointer accounting balances. On an\nunmodified build the release still happens via the package temp_data and\nthe added kfree() sees NULL, with no slab warnings over repeated module\nload and unload cycles."
    }
  ],
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "programFiles": [
            "drivers/hwmon/coretemp.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "1a793caf6f6991716cb07583ed7c27de84ef0cba",
              "lessThan": "dc0d79b1be384e7f6a2308356afd10dcf3bf940f",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "1a793caf6f6991716cb07583ed7c27de84ef0cba",
              "lessThan": "86c1617b7d4b001b20a71deda3c791538a4fa6aa",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "1a793caf6f6991716cb07583ed7c27de84ef0cba",
              "lessThan": "9b23a010a1e8232974617c412cb9f578f3378b70",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "1a793caf6f6991716cb07583ed7c27de84ef0cba",
              "lessThan": "0cd8450c257faa0cece0e0c43d3b55d1a389acc7",
              "versionType": "git",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "programFiles": [
            "drivers/hwmon/coretemp.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "6.9",
              "status": "affected"
            },
            {
              "version": "0",
              "lessThan": "6.9",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.12.110",
              "lessThanOrEqual": "6.12.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.18.52",
              "lessThanOrEqual": "6.18.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.2.6",
              "lessThanOrEqual": "7.2.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.3",
              "lessThanOrEqual": "*",
              "versionType": "original_commit_for_fix",
              "status": "unaffected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {},
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/0cd8450c257faa0cece0e0c43d3b55d1a389acc7",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/86c1617b7d4b001b20a71deda3c791538a4fa6aa",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/9b23a010a1e8232974617c412cb9f578f3378b70",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/dc0d79b1be384e7f6a2308356afd10dcf3bf940f",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ]
}