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.
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"
}
]
}