CVE-2026-74754: scsi: core: pair EH runtime PM get and put

Published Aug 26, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

scsi: core: pair EH runtime PM get and put

shost->ehnoresume is currently consulted twice in one error handling iteration: once before scsiautopmgethost() and once again before scsiautopmputhost().

That is racy when a PM-triggered error path flips shost->ehnoresume while the SCSI EH thread is still running.

The problem flow looks like this: PM path ufshcdsetdevpwrmode() shost->ehnoresume = 1 ufshcdexecutestartstop <-- trigger EH ... shost->ehnoresume = 0

EH path scsierrorhandler() if (!shost->ehnoresume) scsiautopmgethost() <-- skipped ... if (!shost->ehnoresume) scsiautopmputhost() <-- 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 ehnoresume a regular bool so it can be accessed with READONCE() and WRITEONCE(). Snapshot it once per EH iteration and use that snapshot for both runtime PM get and put decisions.

Affected Software

1 affected component
Linux Kernel

Event History

Aug 26, 2026
CVE Published
via MITRE·02:37 PM
Data Sourced
via MITRE·02:37 PM
Description
Data Sourced
via NVD·03:16 PM
Description

Frequently Asked Questions

1

Under what conditions can this occur?

The issue requires a SCSI error-handling iteration to overlap with a power-management-triggered error path that changes shost->eh_noresume. In the described flow, the EH thread skips the runtime PM get while eh_noresume is set, then later performs the runtime PM put after the flag has been cleared.

2

What is the operational impact if the issue is triggered?

The mismatched runtime PM operations can cause a runtime PM usage-count underflow. The affected behavior is in the Linux kernel SCSI core error-handling path.

3

How does the fix prevent the race?

The fix makes eh_noresume a regular bool accessed with READ_ONCE() and WRITE_ONCE(). It snapshots the value once for each error-handling iteration and uses that same value for both the runtime PM get and put decisions.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203