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().

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:*:*:*:*:*:*