Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'hwmon-for-v6.18-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging

Pull hwmon fixes from Guenter Roeck:

- cgbc-hwmon: Add missing NULL check after devm_kzalloc

- gpd-fan: Fix error handling

- pmbus/isl68137: Fix child node reference leak

- pmbus/max34440: Update adpm12160 coefficients to match latest FW

- sht3x: Fix error handling

* tag 'hwmon-for-v6.18-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
hwmon: (sht3x) Fix error handling
hwmon: (cgbc-hwmon) Add missing NULL check after devm_kzalloc()
hwmon: (pmbus/isl68137) Fix child node reference leak on early return
hwmon: (gpd-fan) Fix error handling in gpd_fan_probe()
hwmon: (gpd-fan) Fix return value when platform_get_resource() fails
hwmon: (pmbus/max34440) Update adpm12160 coeff due to latest FW

+32 -23
+3
drivers/hwmon/cgbc-hwmon.c
··· 107 107 nb_sensors = data[0]; 108 108 109 109 hwmon->sensors = devm_kzalloc(dev, sizeof(*hwmon->sensors) * nb_sensors, GFP_KERNEL); 110 + if (!hwmon->sensors) 111 + return -ENOMEM; 112 + 110 113 sensor = hwmon->sensors; 111 114 112 115 for (i = 0; i < nb_sensors; i++) {
+5 -5
drivers/hwmon/gpd-fan.c
··· 615 615 const struct device *hwdev; 616 616 617 617 res = platform_get_resource(pdev, IORESOURCE_IO, 0); 618 - if (IS_ERR(res)) 619 - return dev_err_probe(dev, PTR_ERR(res), 618 + if (!res) 619 + return dev_err_probe(dev, -EINVAL, 620 620 "Failed to get platform resource\n"); 621 621 622 622 region = devm_request_region(dev, res->start, 623 623 resource_size(res), DRIVER_NAME); 624 - if (IS_ERR(region)) 625 - return dev_err_probe(dev, PTR_ERR(region), 624 + if (!region) 625 + return dev_err_probe(dev, -EBUSY, 626 626 "Failed to request region\n"); 627 627 628 628 hwdev = devm_hwmon_device_register_with_info(dev, ··· 631 631 &gpd_fan_chip_info, 632 632 NULL); 633 633 if (IS_ERR(hwdev)) 634 - return dev_err_probe(dev, PTR_ERR(region), 634 + return dev_err_probe(dev, PTR_ERR(hwdev), 635 635 "Failed to register hwmon device\n"); 636 636 637 637 return 0;
+1 -2
drivers/hwmon/pmbus/isl68137.c
··· 336 336 struct isl68137_data *data) 337 337 { 338 338 const struct device_node *np = dev->of_node; 339 - struct device_node *child; 340 339 int err; 341 340 342 - for_each_child_of_node(np, child) { 341 + for_each_child_of_node_scoped(np, child) { 343 342 if (strcmp(child->name, "channel")) 344 343 continue; 345 344
+6 -6
drivers/hwmon/pmbus/max34440.c
··· 336 336 .format[PSC_CURRENT_IN] = direct, 337 337 .format[PSC_CURRENT_OUT] = direct, 338 338 .format[PSC_TEMPERATURE] = direct, 339 - .m[PSC_VOLTAGE_IN] = 1, 339 + .m[PSC_VOLTAGE_IN] = 125, 340 340 .b[PSC_VOLTAGE_IN] = 0, 341 341 .R[PSC_VOLTAGE_IN] = 0, 342 - .m[PSC_VOLTAGE_OUT] = 1, 342 + .m[PSC_VOLTAGE_OUT] = 125, 343 343 .b[PSC_VOLTAGE_OUT] = 0, 344 344 .R[PSC_VOLTAGE_OUT] = 0, 345 - .m[PSC_CURRENT_IN] = 1, 345 + .m[PSC_CURRENT_IN] = 250, 346 346 .b[PSC_CURRENT_IN] = 0, 347 - .R[PSC_CURRENT_IN] = 2, 348 - .m[PSC_CURRENT_OUT] = 1, 347 + .R[PSC_CURRENT_IN] = -1, 348 + .m[PSC_CURRENT_OUT] = 250, 349 349 .b[PSC_CURRENT_OUT] = 0, 350 - .R[PSC_CURRENT_OUT] = 2, 350 + .R[PSC_CURRENT_OUT] = -1, 351 351 .m[PSC_TEMPERATURE] = 1, 352 352 .b[PSC_TEMPERATURE] = 0, 353 353 .R[PSC_TEMPERATURE] = 2,
+17 -10
drivers/hwmon/sht3x.c
··· 291 291 return data; 292 292 } 293 293 294 - static int temp1_input_read(struct device *dev) 294 + static int temp1_input_read(struct device *dev, long *temp) 295 295 { 296 296 struct sht3x_data *data = sht3x_update_client(dev); 297 297 298 298 if (IS_ERR(data)) 299 299 return PTR_ERR(data); 300 300 301 - return data->temperature; 301 + *temp = data->temperature; 302 + return 0; 302 303 } 303 304 304 - static int humidity1_input_read(struct device *dev) 305 + static int humidity1_input_read(struct device *dev, long *humidity) 305 306 { 306 307 struct sht3x_data *data = sht3x_update_client(dev); 307 308 308 309 if (IS_ERR(data)) 309 310 return PTR_ERR(data); 310 311 311 - return data->humidity; 312 + *humidity = data->humidity; 313 + return 0; 312 314 } 313 315 314 316 /* ··· 708 706 u32 attr, int channel, long *val) 709 707 { 710 708 enum sht3x_limits index; 709 + int ret; 711 710 712 711 switch (type) { 713 712 case hwmon_chip: ··· 723 720 case hwmon_temp: 724 721 switch (attr) { 725 722 case hwmon_temp_input: 726 - *val = temp1_input_read(dev); 727 - break; 723 + return temp1_input_read(dev, val); 728 724 case hwmon_temp_alarm: 729 - *val = temp1_alarm_read(dev); 725 + ret = temp1_alarm_read(dev); 726 + if (ret < 0) 727 + return ret; 728 + *val = ret; 730 729 break; 731 730 case hwmon_temp_max: 732 731 index = limit_max; ··· 753 748 case hwmon_humidity: 754 749 switch (attr) { 755 750 case hwmon_humidity_input: 756 - *val = humidity1_input_read(dev); 757 - break; 751 + return humidity1_input_read(dev, val); 758 752 case hwmon_humidity_alarm: 759 - *val = humidity1_alarm_read(dev); 753 + ret = humidity1_alarm_read(dev); 754 + if (ret < 0) 755 + return ret; 756 + *val = ret; 760 757 break; 761 758 case hwmon_humidity_max: 762 759 index = limit_max;