CC: [email protected] CC: Linux Memory Management List <[email protected]> TO: Denis Pauk <[email protected]> CC: Guenter Roeck <[email protected]> CC: Ed Brindley <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 9606f9efb1cec7f8f5912326f182fbfbcad34382 commit: 9d7d41752e9e9794b1725f85252fc34ab302e679 [2790/4921] hwmon: (asus_wmi_sensors) Support X370 Asus WMI. :::::: branch date: 9 hours ago :::::: commit date: 8 days ago config: x86_64-randconfig-m001-20211201 (https://download.01.org/0day-ci/archive/20211202/[email protected]/config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> smatch warnings: drivers/hwmon/asus_wmi_sensors.c:569 asus_wmi_configure_sensor_setup() error: buffer overflow 'hwmon_attributes' 8 <= 9 vim +/hwmon_attributes +569 drivers/hwmon/asus_wmi_sensors.c 9d7d41752e9e97 Denis Pauk 2021-11-16 502 9d7d41752e9e97 Denis Pauk 2021-11-16 503 static int asus_wmi_configure_sensor_setup(struct device *dev, 9d7d41752e9e97 Denis Pauk 2021-11-16 504 struct asus_wmi_sensors *sensor_data) 9d7d41752e9e97 Denis Pauk 2021-11-16 505 { 9d7d41752e9e97 Denis Pauk 2021-11-16 506 const struct hwmon_channel_info **ptr_asus_wmi_ci; 9d7d41752e9e97 Denis Pauk 2021-11-16 507 struct hwmon_channel_info *asus_wmi_hwmon_chan; 9d7d41752e9e97 Denis Pauk 2021-11-16 508 int nr_count[hwmon_max] = {}, nr_types = 0; 9d7d41752e9e97 Denis Pauk 2021-11-16 509 struct asus_wmi_sensor_info *temp_sensor; 9d7d41752e9e97 Denis Pauk 2021-11-16 510 const struct hwmon_chip_info *chip_info; 9d7d41752e9e97 Denis Pauk 2021-11-16 511 enum hwmon_sensor_types type; 9d7d41752e9e97 Denis Pauk 2021-11-16 512 struct device *hwdev; 9d7d41752e9e97 Denis Pauk 2021-11-16 513 int i, idx; 9d7d41752e9e97 Denis Pauk 2021-11-16 514 int err; 9d7d41752e9e97 Denis Pauk 2021-11-16 515 9d7d41752e9e97 Denis Pauk 2021-11-16 516 temp_sensor = devm_kcalloc(dev, 1, sizeof(*temp_sensor), GFP_KERNEL); 9d7d41752e9e97 Denis Pauk 2021-11-16 517 if (!temp_sensor) 9d7d41752e9e97 Denis Pauk 2021-11-16 518 return -ENOMEM; 9d7d41752e9e97 Denis Pauk 2021-11-16 519 9d7d41752e9e97 Denis Pauk 2021-11-16 520 for (i = 0; i < sensor_data->wmi.sensor_count; i++) { 9d7d41752e9e97 Denis Pauk 2021-11-16 521 err = asus_wmi_sensor_info(i, temp_sensor); 9d7d41752e9e97 Denis Pauk 2021-11-16 522 if (err) 9d7d41752e9e97 Denis Pauk 2021-11-16 523 return err; 9d7d41752e9e97 Denis Pauk 2021-11-16 524 9d7d41752e9e97 Denis Pauk 2021-11-16 525 switch (temp_sensor->data_type) { 9d7d41752e9e97 Denis Pauk 2021-11-16 526 case TEMPERATURE_C: 9d7d41752e9e97 Denis Pauk 2021-11-16 527 case VOLTAGE: 9d7d41752e9e97 Denis Pauk 2021-11-16 528 case CURRENT: 9d7d41752e9e97 Denis Pauk 2021-11-16 529 case FAN_RPM: 9d7d41752e9e97 Denis Pauk 2021-11-16 530 case WATER_FLOW: 9d7d41752e9e97 Denis Pauk 2021-11-16 531 type = asus_data_types[temp_sensor->data_type]; 9d7d41752e9e97 Denis Pauk 2021-11-16 532 if (!nr_count[type]) 9d7d41752e9e97 Denis Pauk 2021-11-16 533 nr_types++; 9d7d41752e9e97 Denis Pauk 2021-11-16 534 nr_count[type]++; 9d7d41752e9e97 Denis Pauk 2021-11-16 535 break; 9d7d41752e9e97 Denis Pauk 2021-11-16 536 } 9d7d41752e9e97 Denis Pauk 2021-11-16 537 } 9d7d41752e9e97 Denis Pauk 2021-11-16 538 9d7d41752e9e97 Denis Pauk 2021-11-16 539 if (nr_count[hwmon_temp]) 9d7d41752e9e97 Denis Pauk 2021-11-16 540 nr_count[hwmon_chip]++, nr_types++; 9d7d41752e9e97 Denis Pauk 2021-11-16 541 9d7d41752e9e97 Denis Pauk 2021-11-16 542 asus_wmi_hwmon_chan = devm_kcalloc(dev, nr_types, 9d7d41752e9e97 Denis Pauk 2021-11-16 543 sizeof(*asus_wmi_hwmon_chan), 9d7d41752e9e97 Denis Pauk 2021-11-16 544 GFP_KERNEL); 9d7d41752e9e97 Denis Pauk 2021-11-16 545 if (!asus_wmi_hwmon_chan) 9d7d41752e9e97 Denis Pauk 2021-11-16 546 return -ENOMEM; 9d7d41752e9e97 Denis Pauk 2021-11-16 547 9d7d41752e9e97 Denis Pauk 2021-11-16 548 ptr_asus_wmi_ci = devm_kcalloc(dev, nr_types + 1, 9d7d41752e9e97 Denis Pauk 2021-11-16 549 sizeof(*ptr_asus_wmi_ci), GFP_KERNEL); 9d7d41752e9e97 Denis Pauk 2021-11-16 550 if (!ptr_asus_wmi_ci) 9d7d41752e9e97 Denis Pauk 2021-11-16 551 return -ENOMEM; 9d7d41752e9e97 Denis Pauk 2021-11-16 552 9d7d41752e9e97 Denis Pauk 2021-11-16 553 asus_wmi_chip_info.info = ptr_asus_wmi_ci; 9d7d41752e9e97 Denis Pauk 2021-11-16 554 chip_info = &asus_wmi_chip_info; 9d7d41752e9e97 Denis Pauk 2021-11-16 555 9d7d41752e9e97 Denis Pauk 2021-11-16 556 sensor_data->wmi.info_by_id = devm_kcalloc(dev, sensor_data->wmi.sensor_count, 9d7d41752e9e97 Denis Pauk 2021-11-16 557 sizeof(*sensor_data->wmi.info_by_id), 9d7d41752e9e97 Denis Pauk 2021-11-16 558 GFP_KERNEL); 9d7d41752e9e97 Denis Pauk 2021-11-16 559 9d7d41752e9e97 Denis Pauk 2021-11-16 560 if (!sensor_data->wmi.info_by_id) 9d7d41752e9e97 Denis Pauk 2021-11-16 561 return -ENOMEM; 9d7d41752e9e97 Denis Pauk 2021-11-16 562 9d7d41752e9e97 Denis Pauk 2021-11-16 563 for (type = 0; type < hwmon_max; type++) { 9d7d41752e9e97 Denis Pauk 2021-11-16 564 if (!nr_count[type]) 9d7d41752e9e97 Denis Pauk 2021-11-16 565 continue; 9d7d41752e9e97 Denis Pauk 2021-11-16 566 9d7d41752e9e97 Denis Pauk 2021-11-16 567 err = asus_wmi_hwmon_add_chan_info(asus_wmi_hwmon_chan, dev, 9d7d41752e9e97 Denis Pauk 2021-11-16 568 nr_count[type], type, 9d7d41752e9e97 Denis Pauk 2021-11-16 @569 hwmon_attributes[type]); 9d7d41752e9e97 Denis Pauk 2021-11-16 570 if (err) 9d7d41752e9e97 Denis Pauk 2021-11-16 571 return err; 9d7d41752e9e97 Denis Pauk 2021-11-16 572 9d7d41752e9e97 Denis Pauk 2021-11-16 573 *ptr_asus_wmi_ci++ = asus_wmi_hwmon_chan++; 9d7d41752e9e97 Denis Pauk 2021-11-16 574 9d7d41752e9e97 Denis Pauk 2021-11-16 575 sensor_data->wmi.info[type] = devm_kcalloc(dev, 9d7d41752e9e97 Denis Pauk 2021-11-16 576 nr_count[type], 9d7d41752e9e97 Denis Pauk 2021-11-16 577 sizeof(*sensor_data->wmi.info), 9d7d41752e9e97 Denis Pauk 2021-11-16 578 GFP_KERNEL); 9d7d41752e9e97 Denis Pauk 2021-11-16 579 if (!sensor_data->wmi.info[type]) 9d7d41752e9e97 Denis Pauk 2021-11-16 580 return -ENOMEM; 9d7d41752e9e97 Denis Pauk 2021-11-16 581 } 9d7d41752e9e97 Denis Pauk 2021-11-16 582 9d7d41752e9e97 Denis Pauk 2021-11-16 583 for (i = sensor_data->wmi.sensor_count - 1; i >= 0; i--) { 9d7d41752e9e97 Denis Pauk 2021-11-16 584 temp_sensor = devm_kzalloc(dev, sizeof(*temp_sensor), GFP_KERNEL); 9d7d41752e9e97 Denis Pauk 2021-11-16 585 if (!temp_sensor) 9d7d41752e9e97 Denis Pauk 2021-11-16 586 return -ENOMEM; 9d7d41752e9e97 Denis Pauk 2021-11-16 587 9d7d41752e9e97 Denis Pauk 2021-11-16 588 err = asus_wmi_sensor_info(i, temp_sensor); 9d7d41752e9e97 Denis Pauk 2021-11-16 589 if (err) 9d7d41752e9e97 Denis Pauk 2021-11-16 590 continue; 9d7d41752e9e97 Denis Pauk 2021-11-16 591 9d7d41752e9e97 Denis Pauk 2021-11-16 592 switch (temp_sensor->data_type) { 9d7d41752e9e97 Denis Pauk 2021-11-16 593 case TEMPERATURE_C: 9d7d41752e9e97 Denis Pauk 2021-11-16 594 case VOLTAGE: 9d7d41752e9e97 Denis Pauk 2021-11-16 595 case CURRENT: 9d7d41752e9e97 Denis Pauk 2021-11-16 596 case FAN_RPM: 9d7d41752e9e97 Denis Pauk 2021-11-16 597 case WATER_FLOW: 9d7d41752e9e97 Denis Pauk 2021-11-16 598 type = asus_data_types[temp_sensor->data_type]; 9d7d41752e9e97 Denis Pauk 2021-11-16 599 idx = --nr_count[type]; 9d7d41752e9e97 Denis Pauk 2021-11-16 600 *(sensor_data->wmi.info[type] + idx) = temp_sensor; 9d7d41752e9e97 Denis Pauk 2021-11-16 601 sensor_data->wmi.info_by_id[i] = temp_sensor; 9d7d41752e9e97 Denis Pauk 2021-11-16 602 break; 9d7d41752e9e97 Denis Pauk 2021-11-16 603 } 9d7d41752e9e97 Denis Pauk 2021-11-16 604 } 9d7d41752e9e97 Denis Pauk 2021-11-16 605 9d7d41752e9e97 Denis Pauk 2021-11-16 606 dev_dbg(dev, "board has %d sensors", 9d7d41752e9e97 Denis Pauk 2021-11-16 607 sensor_data->wmi.sensor_count); 9d7d41752e9e97 Denis Pauk 2021-11-16 608 9d7d41752e9e97 Denis Pauk 2021-11-16 609 hwdev = devm_hwmon_device_register_with_info(dev, "asus_wmi_sensors", 9d7d41752e9e97 Denis Pauk 2021-11-16 610 sensor_data, chip_info, NULL); 9d7d41752e9e97 Denis Pauk 2021-11-16 611 9d7d41752e9e97 Denis Pauk 2021-11-16 612 return PTR_ERR_OR_ZERO(hwdev); 9d7d41752e9e97 Denis Pauk 2021-11-16 613 } 9d7d41752e9e97 Denis Pauk 2021-11-16 614 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
