]> www.infradead.org Git - users/griffoul/linux.git/commitdiff
hwmon: (ina238) Correctly clamp shunt voltage limit
authorGuenter Roeck <linux@roeck-us.net>
Fri, 29 Aug 2025 13:49:51 +0000 (06:49 -0700)
committerGuenter Roeck <linux@roeck-us.net>
Mon, 1 Sep 2025 15:03:05 +0000 (08:03 -0700)
When clamping a register value, the result needs to be masked against the
register size. This was missing, resulting in errors when trying to write
negative limits. Fix by masking the clamping result against the register
size.

Fixes: eacb52f010a80 ("hwmon: Driver for Texas Instruments INA238")
Cc: Nathan Rossi <nathan.rossi@digi.com>
Cc: Chris Packham <chris.packham@alliedtelesis.co.nz>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/ina238.c

index 4d3dc018ead9a478ddadda583f31579c37681095..c6b2734898d011b5cd00c806c8c7b9c25eb2053d 100644 (file)
@@ -379,7 +379,7 @@ static int ina238_write_in(struct device *dev, u32 attr, int channel,
                regval = clamp_val(val, -163, 163);
                regval = (regval * 1000 * 4) /
                         (INA238_SHUNT_VOLTAGE_LSB * data->gain);
-               regval = clamp_val(regval, S16_MIN, S16_MAX);
+               regval = clamp_val(regval, S16_MIN, S16_MAX) & 0xffff;
 
                switch (attr) {
                case hwmon_in_max: