CVE-2026-90360
NoneCVSS
—
EPSS
0.2%
Published
Sep 17, 2026
CISA due date
—
Cloudanix analysis
A bug in how Linux handles power-saving features for hardware regulators could cause error messages when putting the computer to sleep soon after turning it on.
- Exploitation
- Requires User Interaction
- Attacker needs
- Low Privilege
- Complexity
- Moderate
- Impact
- Other
- Component
- OS kernel
- Class
- Race Condition
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
A non-freezable workqueue allows regulator initialization cleanup work to execute concurrently with system suspend, potentially performing I2C operations on suspended adapters and generating warnings.
Why it matters to the business
May lead to unexpected warnings or minor disruptions during suspend operations on Linux systems, particularly in environments with frequent suspend/resume cycles. Low urgency given no known exploitation.
How an attack unfolds
An attacker with local access could attempt to trigger system suspend at a specific time after boot to induce the race condition, though this primarily results in warnings rather than privilege escalation or data compromise.
How to fix it
Apply the kernel patch that switches the work to system_freezable_wq or update to a patched Linux kernel version.
How to confirm the fix worked
Verify the source code change in regulator core to use system_freezable_wq for init complete work; test suspend/resume cycles post-update to ensure no warnings.
Typical attack path
- Boot the system
- Wait approximately 30 seconds
- Initiate system suspend to race with the delayed work item
How to detect it
Look in kernel logs for warnings from __i2c_transfer related to regulator_init_complete_work during suspend operations.
What your security team should do
- Prioritize kernel updates in affected distributions
- Monitor for related kernel updates
- Test suspend functionality in lab environments
The record
In the Linux kernel, the following vulnerability has been resolved: regulator: core: use system_freezable_wq for init complete work schedule_delayed_work() uses system_wq, which is non-freezable, allowing regulator_init_complete_work to run concurrently with system suspend. This work fires ~30s after boot to disable unused regulators via I2C. When it races with PM suspend, the I2C adapter may already be suspended, triggering a -ESHUTDOWN warning in __i2c_transfer(): WARNING: ... at __i2c_transfer+0x36c/0x3c8 Call trace: __i2c_transfer i2c_transfer regmap_i2c_write _regmap_update_bits regulator_disable_regmap _regulator_do_disable regulator_late_cleanup regulator_init_complete_work_function process_one_work Switch to system_freezable_wq so the work is frozen before any device is suspended, eliminating the race.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|