CVE-2024-35824
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
17/05/2024
Last modified:
26/09/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
misc: lis3lv02d_i2c: Fix regulators getting en-/dis-abled twice on suspend/resume<br />
<br />
When not configured for wakeup lis3lv02d_i2c_suspend() will call<br />
lis3lv02d_poweroff() even if the device has already been turned off<br />
by the runtime-suspend handler and if configured for wakeup and<br />
the device is runtime-suspended at this point then it is not turned<br />
back on to serve as a wakeup source.<br />
<br />
Before commit b1b9f7a49440 ("misc: lis3lv02d_i2c: Add missing setting<br />
of the reg_ctrl callback"), lis3lv02d_poweroff() failed to disable<br />
the regulators which as a side effect made calling poweroff() twice ok.<br />
<br />
Now that poweroff() correctly disables the regulators, doing this twice<br />
triggers a WARN() in the regulator core:<br />
<br />
unbalanced disables for regulator-dummy<br />
WARNING: CPU: 1 PID: 92 at drivers/regulator/core.c:2999 _regulator_disable<br />
...<br />
<br />
Fix lis3lv02d_i2c_suspend() to not call poweroff() a second time if<br />
already runtime-suspended and add a poweron() call when necessary to<br />
make wakeup work.<br />
<br />
lis3lv02d_i2c_resume() has similar issues, with an added weirness that<br />
it always powers on the device if it is runtime suspended, after which<br />
the first runtime-resume will call poweron() again, causing the enabled<br />
count for the regulator to increase by 1 every suspend/resume. These<br />
unbalanced regulator_enable() calls cause the regulator to never<br />
be turned off and trigger the following WARN() on driver unbind:<br />
<br />
WARNING: CPU: 1 PID: 1724 at drivers/regulator/core.c:2396 _regulator_put<br />
<br />
Fix this by making lis3lv02d_i2c_resume() mirror the new suspend().
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.1.77 (including) | 6.1.84 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.6.16 (including) | 6.6.24 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7.4 (including) | 6.7.12 (excluding) |
| cpe:2.3:o:linux:linux_kernel:6.8:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.8:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.8:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.8:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.8:rc5:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.8:rc6:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.8:rc7:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/4154e767354140db7804207117e7238fb337b0e7
- https://git.kernel.org/stable/c/997ca415384612c8df76d99d9a768e0b3f42b325
- https://git.kernel.org/stable/c/ac3e0384073b2408d6cb0d972fee9fcc3776053d
- https://git.kernel.org/stable/c/f6df761182fc953907b18aba5049fc2a044ecb45
- https://git.kernel.org/stable/c/4154e767354140db7804207117e7238fb337b0e7
- https://git.kernel.org/stable/c/997ca415384612c8df76d99d9a768e0b3f42b325
- https://git.kernel.org/stable/c/ac3e0384073b2408d6cb0d972fee9fcc3776053d
- https://git.kernel.org/stable/c/f6df761182fc953907b18aba5049fc2a044ecb45



