Description
In the Linux kernel, the following vulnerability has been resolved: iio: dac: m62332: Fix regulator reference count imbalance m62332_set_value() enables the Vcc regulator on every write of a non-zero value and disables it on every write of zero, without tracking the channel's current state. Because the regulator is reference counted, changing a channel directly from one non-zero value to another enables it more than once, while a later write of zero disables it only once. The reference count never returns to zero and the regulator is left enabled indefinitely. Only enable the regulator on the transition from zero to non-zero, and only disable it on the transition from non-zero to zero, using the previously stored channel value to detect the edge. Balance the regulator on the I2C error path so the reference count stays consistent if the write fails.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
b87b0c0f81e8d11c881b726b886b7502ab67d884 to < bac0ed8bee651aa841375edf72c6ab1d10ac80c6affectedb87b0c0f81e8d11c881b726b886b7502ab67d884 to < 9263b9ad968a563337a60e0eb66e35186e1faf9aaffectedb87b0c0f81e8d11c881b726b886b7502ab67d884 to < 1d3a7d7dd3adee19e00be2b2237140f0fe169484affectedb87b0c0f81e8d11c881b726b886b7502ab67d884 to < f5acb824277a97a5210c454872202bf7f08c75d4affectedb87b0c0f81e8d11c881b726b886b7502ab67d884 to < ae18d2d2ef27a4d04fda6e30c23774513dc9be1eaffectedb87b0c0f81e8d11c881b726b886b7502ab67d884 to < 08ac8d2976d57aa943d64e351c4d0bd8bb0c6de9affectedb87b0c0f81e8d11c881b726b886b7502ab67d884 to < 9fe22f563b2a0fdb11fd3711a8c39c023629c08aaffectedb87b0c0f81e8d11c881b726b886b7502ab67d884 to < a130404ce0b69ca1438126bd81c1985d3b4d2e6faffected
Linux Linux
Default version status: affected
4.2affected0 to < 4.2unaffected5.10.270 to ≤ 5.10.*unaffected5.15.221 to ≤ 5.15.*unaffected6.1.188 to ≤ 6.1.*unaffected6.6.157 to ≤ 6.6.*unaffected6.12.110 to ≤ 6.12.*unaffected6.18.51 to ≤ 6.18.*unaffected7.2.5 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/bac0ed8bee651aa841375edf72c6ab1d10ac80c6 ↗
- https://git.kernel.org/stable/c/9263b9ad968a563337a60e0eb66e35186e1faf9a ↗
- https://git.kernel.org/stable/c/1d3a7d7dd3adee19e00be2b2237140f0fe169484 ↗
- https://git.kernel.org/stable/c/f5acb824277a97a5210c454872202bf7f08c75d4 ↗
- https://git.kernel.org/stable/c/ae18d2d2ef27a4d04fda6e30c23774513dc9be1e ↗
- https://git.kernel.org/stable/c/08ac8d2976d57aa943d64e351c4d0bd8bb0c6de9 ↗
- https://git.kernel.org/stable/c/9fe22f563b2a0fdb11fd3711a8c39c023629c08a ↗
- https://git.kernel.org/stable/c/a130404ce0b69ca1438126bd81c1985d3b4d2e6f ↗