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.0-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging

Pull hwmon fixes from Guenter Roeck:

- Fix out of bounds access in gpio-fan driver

- Fix VOUT margin caching in PMBus core

- Avoid error message after -EPROBE_DEFER from devm_regulator_register()

* tag 'hwmon-for-v6.0-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
hwmon: (gpio-fan) Fix array out of bounds access
hwmon: (pmbus) Fix vout margin caching
hwmon: (pmbus) Use dev_err_probe() to filter -EPROBE_DEFER error messages

+15 -7
+3
drivers/hwmon/gpio-fan.c
··· 391 391 if (!fan_data) 392 392 return -EINVAL; 393 393 394 + if (state >= fan_data->num_speed) 395 + return -EINVAL; 396 + 394 397 set_fan_speed(fan_data, state); 395 398 return 0; 396 399 }
+12 -7
drivers/hwmon/pmbus/pmbus_core.c
··· 2861 2861 .data = -1, 2862 2862 }; 2863 2863 2864 - if (!data->vout_low[page]) { 2864 + if (data->vout_low[page] < 0) { 2865 2865 if (pmbus_check_word_register(client, page, PMBUS_MFR_VOUT_MIN)) 2866 2866 s.data = _pmbus_read_word_data(client, page, 0xff, 2867 2867 PMBUS_MFR_VOUT_MIN); ··· 2887 2887 .data = -1, 2888 2888 }; 2889 2889 2890 - if (!data->vout_high[page]) { 2890 + if (data->vout_high[page] < 0) { 2891 2891 if (pmbus_check_word_register(client, page, PMBUS_MFR_VOUT_MAX)) 2892 2892 s.data = _pmbus_read_word_data(client, page, 0xff, 2893 2893 PMBUS_MFR_VOUT_MAX); ··· 3016 3016 3017 3017 rdev = devm_regulator_register(dev, &info->reg_desc[i], 3018 3018 &config); 3019 - if (IS_ERR(rdev)) { 3020 - dev_err(dev, "Failed to register %s regulator\n", 3021 - info->reg_desc[i].name); 3022 - return PTR_ERR(rdev); 3023 - } 3019 + if (IS_ERR(rdev)) 3020 + return dev_err_probe(dev, PTR_ERR(rdev), 3021 + "Failed to register %s regulator\n", 3022 + info->reg_desc[i].name); 3024 3023 } 3025 3024 3026 3025 return 0; ··· 3319 3320 struct pmbus_data *data; 3320 3321 size_t groups_num = 0; 3321 3322 int ret; 3323 + int i; 3322 3324 char *name; 3323 3325 3324 3326 if (!info) ··· 3352 3352 data->info = info; 3353 3353 data->currpage = -1; 3354 3354 data->currphase = -1; 3355 + 3356 + for (i = 0; i < ARRAY_SIZE(data->vout_low); i++) { 3357 + data->vout_low[i] = -1; 3358 + data->vout_high[i] = -1; 3359 + } 3355 3360 3356 3361 ret = pmbus_init_common(client, data, info); 3357 3362 if (ret < 0)