]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
hwmon: (pmbus/tps53679) Fix driver info initialization in probe routine
authorVadim Pasternak <vadimp@mellanox.com>
Mon, 18 Feb 2019 19:54:40 +0000 (19:54 +0000)
committerGuenter Roeck <linux@roeck-us.net>
Mon, 18 Feb 2019 22:22:52 +0000 (14:22 -0800)
Fix tps53679_probe() by using dynamically allocated "pmbus_driver_info"
structure instead of static. Usage of static structures causes
overwritten of the field "vrm_version", in case the system is equipped
with several tps53679 devices with the different "vrm_version".
In such case the last probed device overwrites this field for all
others.

Fixes: 610526527a13 ("hwmon: (pmbus) Add support for Texas Instruments tps53679 device")
Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/pmbus/tps53679.c

index 85b515cd9df0ee804775d9610d68f8d927525475..2bc352c5357f446d1d7b9f34a779a610a25cb4cd 100644 (file)
@@ -80,7 +80,14 @@ static struct pmbus_driver_info tps53679_info = {
 static int tps53679_probe(struct i2c_client *client,
                          const struct i2c_device_id *id)
 {
-       return pmbus_do_probe(client, id, &tps53679_info);
+       struct pmbus_driver_info *info;
+
+       info = devm_kmemdup(&client->dev, &tps53679_info, sizeof(*info),
+                           GFP_KERNEL);
+       if (!info)
+               return -ENOMEM;
+
+       return pmbus_do_probe(client, id, info);
 }
 
 static const struct i2c_device_id tps53679_id[] = {