CVE-2025-40130 (GCVE-0-2025-40130)

Vulnerability from cvelistv5 – Published: 2025-11-12 10:23 – Updated: 2026-05-11 21:43
VLAI
Title
scsi: ufs: core: Fix data race in CPU latency PM QoS request handling
Summary
In the Linux kernel, the following vulnerability has been resolved: scsi: ufs: core: Fix data race in CPU latency PM QoS request handling The cpu_latency_qos_add/remove/update_request interfaces lack internal synchronization by design, requiring the caller to ensure thread safety. The current implementation relies on the 'pm_qos_enabled' flag, which is insufficient to prevent concurrent access and cannot serve as a proper synchronization mechanism. This has led to data races and list corruption issues. A typical race condition call trace is: [Thread A] ufshcd_pm_qos_exit() --> cpu_latency_qos_remove_request() --> cpu_latency_qos_apply(); --> pm_qos_update_target() --> plist_del <--(1) delete plist node --> memset(req, 0, sizeof(*req)); --> hba->pm_qos_enabled = false; [Thread B] ufshcd_devfreq_target --> ufshcd_devfreq_scale --> ufshcd_scale_clks --> ufshcd_pm_qos_update <--(2) pm_qos_enabled is true --> cpu_latency_qos_update_request --> pm_qos_update_target --> plist_del <--(3) plist node use-after-free Introduces a dedicated mutex to serialize PM QoS operations, preventing data races and ensuring safe access to PM QoS resources, including sysfs interface reads.
Severity
No CVSS data available.
Assigner
Impacted products
Vendor Product Version
Linux Linux Affected: 2777e73fc154e2e87233bdcc0e2402b33815198e , < d9df61afb8d23c475f1be3c714da2c34c156ab01 (git)
Affected: 2777e73fc154e2e87233bdcc0e2402b33815198e , < 79dde5f7dc7c038eec903745dc1550cd4139980e (git)
Create a notification for this product.
Linux Linux Affected: 6.9
Unaffected: 0 , < 6.9 (semver)
Unaffected: 6.17.3 , ≤ 6.17.* (semver)
Unaffected: 6.18 , ≤ * (original_commit_for_fix)
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/ufs/core/ufs-sysfs.c",
            "drivers/ufs/core/ufshcd.c",
            "include/ufs/ufshcd.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "d9df61afb8d23c475f1be3c714da2c34c156ab01",
              "status": "affected",
              "version": "2777e73fc154e2e87233bdcc0e2402b33815198e",
              "versionType": "git"
            },
            {
              "lessThan": "79dde5f7dc7c038eec903745dc1550cd4139980e",
              "status": "affected",
              "version": "2777e73fc154e2e87233bdcc0e2402b33815198e",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/ufs/core/ufs-sysfs.c",
            "drivers/ufs/core/ufshcd.c",
            "include/ufs/ufshcd.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.9"
            },
            {
              "lessThan": "6.9",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.17.*",
              "status": "unaffected",
              "version": "6.17.3",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.18",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.17.3",
                  "versionStartIncluding": "6.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18",
                  "versionStartIncluding": "6.9",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nscsi: ufs: core: Fix data race in CPU latency PM QoS request handling\n\nThe cpu_latency_qos_add/remove/update_request interfaces lack internal\nsynchronization by design, requiring the caller to ensure thread safety.\nThe current implementation relies on the \u0027pm_qos_enabled\u0027 flag, which is\ninsufficient to prevent concurrent access and cannot serve as a proper\nsynchronization mechanism. This has led to data races and list\ncorruption issues.\n\nA typical race condition call trace is:\n\n[Thread A]\nufshcd_pm_qos_exit()\n  --\u003e cpu_latency_qos_remove_request()\n    --\u003e cpu_latency_qos_apply();\n      --\u003e pm_qos_update_target()\n        --\u003e plist_del              \u003c--(1) delete plist node\n    --\u003e memset(req, 0, sizeof(*req));\n  --\u003e hba-\u003epm_qos_enabled = false;\n\n[Thread B]\nufshcd_devfreq_target\n  --\u003e ufshcd_devfreq_scale\n    --\u003e ufshcd_scale_clks\n      --\u003e ufshcd_pm_qos_update     \u003c--(2) pm_qos_enabled is true\n        --\u003e cpu_latency_qos_update_request\n          --\u003e pm_qos_update_target\n            --\u003e plist_del          \u003c--(3) plist node use-after-free\n\nIntroduces a dedicated mutex to serialize PM QoS operations, preventing\ndata races and ensuring safe access to PM QoS resources, including sysfs\ninterface reads."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-05-11T21:43:19.987Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/d9df61afb8d23c475f1be3c714da2c34c156ab01"
        },
        {
          "url": "https://git.kernel.org/stable/c/79dde5f7dc7c038eec903745dc1550cd4139980e"
        }
      ],
      "title": "scsi: ufs: core: Fix data race in CPU latency PM QoS request handling",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-40130",
    "datePublished": "2025-11-12T10:23:21.605Z",
    "dateReserved": "2025-04-16T07:20:57.170Z",
    "dateUpdated": "2026-05-11T21:43:19.987Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2025-40130",
      "date": "2026-05-27",
      "epss": "0.00026",
      "percentile": "0.07845"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2025-40130\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-11-12T11:15:42.637\",\"lastModified\":\"2025-11-12T16:19:12.850\",\"vulnStatus\":\"Awaiting Analysis\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nscsi: ufs: core: Fix data race in CPU latency PM QoS request handling\\n\\nThe cpu_latency_qos_add/remove/update_request interfaces lack internal\\nsynchronization by design, requiring the caller to ensure thread safety.\\nThe current implementation relies on the \u0027pm_qos_enabled\u0027 flag, which is\\ninsufficient to prevent concurrent access and cannot serve as a proper\\nsynchronization mechanism. This has led to data races and list\\ncorruption issues.\\n\\nA typical race condition call trace is:\\n\\n[Thread A]\\nufshcd_pm_qos_exit()\\n  --\u003e cpu_latency_qos_remove_request()\\n    --\u003e cpu_latency_qos_apply();\\n      --\u003e pm_qos_update_target()\\n        --\u003e plist_del              \u003c--(1) delete plist node\\n    --\u003e memset(req, 0, sizeof(*req));\\n  --\u003e hba-\u003epm_qos_enabled = false;\\n\\n[Thread B]\\nufshcd_devfreq_target\\n  --\u003e ufshcd_devfreq_scale\\n    --\u003e ufshcd_scale_clks\\n      --\u003e ufshcd_pm_qos_update     \u003c--(2) pm_qos_enabled is true\\n        --\u003e cpu_latency_qos_update_request\\n          --\u003e pm_qos_update_target\\n            --\u003e plist_del          \u003c--(3) plist node use-after-free\\n\\nIntroduces a dedicated mutex to serialize PM QoS operations, preventing\\ndata races and ensuring safe access to PM QoS resources, including sysfs\\ninterface reads.\"}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/79dde5f7dc7c038eec903745dc1550cd4139980e\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/d9df61afb8d23c475f1be3c714da2c34c156ab01\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
  }
}


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…