regulator: core: use system_freezable_wq for init complete work
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 4.9.207, 4.14.160, 4.20, 5.3, 5.4, and 7 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
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.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 8b8c8d69b1a31004517d4c71a490f47bdf3405a2 · fixed in 8a2ae3ab348cce44120667277c2198f10cc348b1; From d7ce17fba6c8e316ca9a554a87edddce6f862435 · fixed in 350a0cba90e1bd40b1fe5b396923d2f3a61d1056; From 55576cf1853798e86f620766e23b604c9224c19c · fixed in 2cebc00340a585adeffe321bc41f1937eb79a4dc; From 55576cf1853798e86f620766e23b604c9224c19c · fixed in 9cf65270c1c1717c84dcfacd58a782c1186b0cbf; From 55576cf1853798e86f620766e23b604c9224c19c · fixed in dc8570a5b830190bf0b57017c35aef97cd6ad7d9; From 55576cf1853798e86f620766e23b604c9224c19c · fixed in 6d0a2c5e210f2fba099129e6183ef81316a6ae48; From 55576cf1853798e86f620766e23b604c9224c19c · fixed in 0d23d658d79925076026fff62a49b8c94e0e8922; From 55576cf1853798e86f620766e23b604c9224c19c · fixed in 0b950aa7ec95e120b2bde745ca9a7ed3ce49d528; From 55576cf1853798e86f620766e23b604c9224c19c · fixed in 29dc2e24f6adb36dcb884acf455644c397a67471; From 55576cf1853798e86f620766e23b604c9224c19c · fixed in 03eab318cedd6ae34ecd34533cd986edf5237164; From 4.9.195 · fixed in 4.9.207; From 4.14.147 · fixed in 4.14.160; From 4.19.77 · fixed in 4.20; From 5.2.19 · fixed in 5.3; From 5.3.4 · fixed in 5.4
- Linux Linux
5.4
- KernelLinux
fixed in 4.9.207; From 4.10.0 · fixed in 4.14.160; From 4.15.0 · fixed in 5.10.270; From 5.4.0 · fixed in 5.15.221; From 5.11.0 · fixed in 6.1.188; From 5.16.0 · fixed in 6.6.157; From 6.2.0 · fixed in 6.12.110; From 6.7.0 · fixed in 6.18.52; From 6.13.0 · fixed in 7.2.6
References 10
git.kernel.org
- stable/c/8a2ae3ab348cce44120667277c2198f10cc348b1
- stable/c/350a0cba90e1bd40b1fe5b396923d2f3a61d1056
- stable/c/2cebc00340a585adeffe321bc41f1937eb79a4dc
- stable/c/9cf65270c1c1717c84dcfacd58a782c1186b0cbf
- stable/c/dc8570a5b830190bf0b57017c35aef97cd6ad7d9
- stable/c/6d0a2c5e210f2fba099129e6183ef81316a6ae48
- stable/c/0d23d658d79925076026fff62a49b8c94e0e8922
- stable/c/0b950aa7ec95e120b2bde745ca9a7ed3ce49d528
- stable/c/29dc2e24f6adb36dcb884acf455644c397a67471
- stable/c/03eab318cedd6ae34ecd34533cd986edf5237164