← Back to CVE Explorer

CVE-2026-74754

Full vulnerability record from the local CVENow database.

Description

In the Linux kernel, the following vulnerability has been resolved: scsi: core: pair EH runtime PM get and put shost->eh_noresume is currently consulted twice in one error handling iteration: once before scsi_autopm_get_host() and once again before scsi_autopm_put_host(). That is racy when a PM-triggered error path flips shost->eh_noresume while the SCSI EH thread is still running. The problem flow looks like this: PM path ufshcd_set_dev_pwr_mode() shost->eh_noresume = 1 ufshcd_execute_start_stop <-- trigger EH ... shost->eh_noresume = 0 EH path scsi_error_handler() if (!shost->eh_noresume) scsi_autopm_get_host() <-- skipped ... if (!shost->eh_noresume) scsi_autopm_put_host() <-- executed later In that case one EH iteration can skip autoresume on entry and still drop a runtime PM reference on exit. That leaves an unmatched runtime PM put and can trigger a runtime PM usage count underflow. Fix this by making eh_noresume a regular bool so it can be accessed with READ_ONCE() and WRITE_ONCE(). Snapshot it once per EH iteration and use that snapshot for both runtime PM get and put decisions.

Severity
Not scored
CVSS score
Not available
Vulnerability status
Received
Source identifier
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Published
2026-08-26 15:16:54.500000
Last modified
2026-10-30 13:20:06.040000
View original CVE JSON
{
  "id": "CVE-2026-74754",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
  "published": "2026-08-26T15:16:54.500",
  "lastModified": "2026-10-30T13:20:06.040",
  "vulnStatus": "Received",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nscsi: core: pair EH runtime PM get and put\n\nshost->eh_noresume is currently consulted twice in one error handling\niteration: once before scsi_autopm_get_host() and once again before\nscsi_autopm_put_host().\n\nThat is racy when a PM-triggered error path flips shost->eh_noresume\nwhile the SCSI EH thread is still running.\n\nThe problem flow looks like this:\nPM path\n  ufshcd_set_dev_pwr_mode()\n    shost->eh_noresume = 1\n    ufshcd_execute_start_stop  <-- trigger EH\n    ...\n    shost->eh_noresume = 0\n\nEH path\n  scsi_error_handler()\n    if (!shost->eh_noresume)\n      scsi_autopm_get_host()  <-- skipped\n    ...\n    if (!shost->eh_noresume)\n       scsi_autopm_put_host()  <-- executed later\n\nIn that case one EH iteration can skip autoresume on entry and still\ndrop a runtime PM reference on exit. That leaves an unmatched runtime PM\nput and can trigger a runtime PM usage count underflow.\n\nFix this by making eh_noresume a regular bool so it can be accessed with\nREAD_ONCE() and WRITE_ONCE(). Snapshot it once per EH iteration and use\nthat snapshot for both runtime PM get and put decisions."
    }
  ],
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "programFiles": [
            "drivers/scsi/scsi_error.c",
            "drivers/ufs/core/ufshcd.c",
            "include/scsi/scsi_host.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "ae0751ffc77e7f21629970fdab5528c573e637f8",
              "lessThan": "9aca00c74730f4bc12d0717d33db637a16ccdfea",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "ae0751ffc77e7f21629970fdab5528c573e637f8",
              "lessThan": "1ec5f6aa38ea990af37c49af7a4bb3db00da7f9d",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "ae0751ffc77e7f21629970fdab5528c573e637f8",
              "lessThan": "0038a2a75a15d163f428c93103c6d02d4d231a7a",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "ae0751ffc77e7f21629970fdab5528c573e637f8",
              "lessThan": "fdc93f4a801077efbf1b87570ade8d8f325de62f",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "ae0751ffc77e7f21629970fdab5528c573e637f8",
              "lessThan": "e83eed1bea142c8fe852fd53156845b88252ecd8",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "ae0751ffc77e7f21629970fdab5528c573e637f8",
              "lessThan": "872f486259ae0bc6b73ca4735a15d013241f73e9",
              "versionType": "git",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "programFiles": [
            "drivers/scsi/scsi_error.c",
            "drivers/ufs/core/ufshcd.c",
            "include/scsi/scsi_host.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "3.3",
              "status": "affected"
            },
            {
              "version": "0",
              "lessThan": "3.3",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.1.191",
              "lessThanOrEqual": "6.1.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.6.160",
              "lessThanOrEqual": "6.6.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.12.114",
              "lessThanOrEqual": "6.12.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.18.57",
              "lessThanOrEqual": "6.18.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.1.10",
              "lessThanOrEqual": "7.1.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.2",
              "lessThanOrEqual": "*",
              "versionType": "original_commit_for_fix",
              "status": "unaffected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {},
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/0038a2a75a15d163f428c93103c6d02d4d231a7a",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/1ec5f6aa38ea990af37c49af7a4bb3db00da7f9d",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/872f486259ae0bc6b73ca4735a15d013241f73e9",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/9aca00c74730f4bc12d0717d33db637a16ccdfea",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/e83eed1bea142c8fe852fd53156845b88252ecd8",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/fdc93f4a801077efbf1b87570ade8d8f325de62f",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ]
}