Description (CNA)
In the Linux kernel, the following vulnerability has been resolved: hwmon: (ltc4282) Clamp negative current limits When a negative value is passed to ltc4282_write_curr(), the signed long val is cast directly to u64: drivers/hwmon/ltc4282.c:ltc4282_write_curr() { /* need to pass it in millivolt */ u32 in = DIV_ROUND_CLOSEST_ULL((u64)val * st->rsense, DECA * MICRO); ... } This cast converts negative inputs into large positive values. The subsequent division result overflows the u32 in variable, truncating to a pseudo-random positive value. When this is passed to ltc4282_write_voltage_byte(), it is clamped to the maximum limit instead of zero. Clamp val to 0 and to the maximum supported upper limit before the cast and assign the result to a 64-bit temporary variable before the division to avoid the underflow and an also possible overflow.
Affected (CNA)
| Vendor / product | Versions |
|---|---|
| Linux / Linux | affected cbc29538dbf7d7400f1ffc5dd5713e6a551463a0 before 60e06c4dba696173982393252a40ceb7dd2eec18; affected cbc29538dbf7d7400f1ffc5dd5713e6a551463a0 before de58b90a4d1417c15b693eb04c0ce6bc925d84c6; affected cbc29538dbf7d7400f1ffc5dd5713e6a551463a0 before 046e56b53c09375ef39903514496aa5508db9729; affected cbc29538dbf7d7400f1ffc5dd5713e6a551463a0 before e253dd5f9f6d875a317895bf43ec9534ed7523cb |
| Linux / Linux | affected 6.9; unaffected 0 before 6.9; unaffected 6.12.104 through 6.12.*; unaffected 6.18.45 through 6.18.*; unaffected 7.1.9 through 7.1.*; unaffected 7.2 through * |
CWE
No CWE identifiers supplied.