]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
hwmon: (pxe1610) Check return value of page-select write in probe
authorSanman Pradhan <psanman@juniper.net>
Sun, 29 Mar 2026 17:09:48 +0000 (17:09 +0000)
committerGuenter Roeck <linux@roeck-us.net>
Mon, 30 Mar 2026 02:04:16 +0000 (19:04 -0700)
pxe1610_probe() writes PMBUS_PAGE to select page 0 but does not check
the return value. If the write fails, subsequent register reads operate
on an indeterminate page, leading to silent misconfiguration.

Check the return value and propagate the error using dev_err_probe(),
which also handles -EPROBE_DEFER correctly without log spam.

Fixes: 344757bac526 ("hwmon: (pmbus) Add Infineon PXE1610 VR driver")
Signed-off-by: Sanman Pradhan <psanman@juniper.net>
Link: https://lore.kernel.org/r/20260329170925.34581-4-sanman.pradhan@hpe.com
[groeck: Fix "Fixes" SHA]
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/pmbus/pxe1610.c

index 6a4a978eca7e89df1241245dbd01c52d76dba623..24c1f961c76689f467e79a2cc65793a84deb03b4 100644 (file)
@@ -104,7 +104,10 @@ static int pxe1610_probe(struct i2c_client *client)
         * By default this device doesn't boot to page 0, so set page 0
         * to access all pmbus registers.
         */
-       i2c_smbus_write_byte_data(client, PMBUS_PAGE, 0);
+       ret = i2c_smbus_write_byte_data(client, PMBUS_PAGE, 0);
+       if (ret < 0)
+               return dev_err_probe(&client->dev, ret,
+                                    "Failed to set page 0\n");
 
        /* Read Manufacturer id */
        ret = i2c_smbus_read_block_data(client, PMBUS_MFR_ID, buf);