Hi Joseph, kernel test robot noticed the following build warnings: [auto build test WARNING on pavel-leds/for-next] [cannot apply to lee-leds/for-leds-next linus/master v6.7 next-20240108] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Joseph-Strauss/Add-multicolor-support-to-BlinkM-LED-driver/20240107-013235 base: git://git.kernel.org/pub/scm/linux/kernel/git/pavel/linux-leds.git for-next patch link: https://lore.kernel.org/r/20240106172944.7593-1-jstrauss%40mailbox.org patch subject: [PATCH v4] Add multicolor support to BlinkM LED driver config: s390-allyesconfig (https://download.01.org/0day-ci/archive/20240108/202401082043.w97LLdJn-lkp@xxxxxxxxx/config) compiler: s390-linux-gcc (GCC) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240108/202401082043.w97LLdJn-lkp@xxxxxxxxx/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202401082043.w97LLdJn-lkp@xxxxxxxxx/ All warnings (new ones prefixed by >>): drivers/leds/leds-blinkm.c: In function 'blinkm_probe': >> drivers/leds/leds-blinkm.c:721:53: warning: 'snprintf' output may be truncated before the last format character [-Wformat-truncation=] 721 | "blinkm-%d-%d:rgb:indicator", | ^ drivers/leds/leds-blinkm.c:720:17: note: 'snprintf' output between 25 and 39 bytes into a destination of size 28 720 | snprintf(blinkm_led_name, sizeof(blinkm_led_name), | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 721 | "blinkm-%d-%d:rgb:indicator", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 722 | client->adapter->nr, | ~~~~~~~~~~~~~~~~~~~~ 723 | client->addr); | ~~~~~~~~~~~~~ vim +/snprintf +721 drivers/leds/leds-blinkm.c 595 596 static int blinkm_probe(struct i2c_client *client, 597 const struct i2c_device_id *id) 598 { 599 struct blinkm_data *data; 600 /* For multicolor support */ 601 struct blinkm_led *mc_led; 602 struct mc_subled *mc_led_info; 603 /* 3 seperate classes for red, green, and blue respectively */ 604 struct blinkm_led *leds[NUM_LEDS]; 605 int err, i; 606 char blinkm_led_name[28]; 607 608 data = devm_kzalloc(&client->dev, 609 sizeof(struct blinkm_data), GFP_KERNEL); 610 if (!data) { 611 err = -ENOMEM; 612 goto exit; 613 } 614 615 mc_led_info = devm_kcalloc(&client->dev, NUM_LEDS, sizeof(*mc_led_info), 616 GFP_KERNEL); 617 if (!mc_led_info) { 618 err = -ENOMEM; 619 goto exit; 620 } 621 data->i2c_addr = 0x08; 622 /* i2c addr - use fake addr of 0x08 initially (real is 0x09) */ 623 data->fw_ver = 0xfe; 624 /* firmware version - use fake until we read real value 625 * (currently broken - BlinkM confused!) */ 626 data->script_id = 0x01; 627 data->i2c_client = client; 628 629 i2c_set_clientdata(client, data); 630 mutex_init(&data->update_lock); 631 632 /* Register sysfs hooks */ 633 err = sysfs_create_group(&client->dev.kobj, &blinkm_group); 634 if (err < 0) { 635 dev_err(&client->dev, "couldn't register sysfs group\n"); 636 goto exit; 637 } 638 639 if (!IS_ENABLED(CONFIG_LEDS_BLINKM_MULTICOLOR)) { 640 /* Register red, green, and blue sysfs classes */ 641 for (i = 0; i < NUM_LEDS; i++) { 642 /* RED = 0, GREEN = 1, BLUE = 2 */ 643 leds[i] = &data->blinkm_leds[i]; 644 leds[i]->i2c_client = client; 645 leds[i]->id = i; 646 leds[i]->led_cdev.max_brightness = 255; 647 leds[i]->led_cdev.flags = LED_CORE_SUSPENDRESUME; 648 switch (i) { 649 case RED: 650 snprintf(blinkm_led_name, sizeof(blinkm_led_name), 651 "blinkm-%d-%d-red", 652 client->adapter->nr, 653 client->addr); 654 leds[i]->led_cdev.name = blinkm_led_name; 655 leds[i]->led_cdev.brightness_set_blocking = 656 blinkm_led_red_set; 657 err = led_classdev_register(&client->dev, 658 &leds[i]->led_cdev); 659 if (err < 0) { 660 dev_err(&client->dev, 661 "couldn't register LED %s\n", 662 leds[i]->led_cdev.name); 663 goto failred; 664 } 665 break; 666 case GREEN: 667 snprintf(blinkm_led_name, sizeof(blinkm_led_name), 668 "blinkm-%d-%d-green", 669 client->adapter->nr, 670 client->addr); 671 leds[i]->led_cdev.name = blinkm_led_name; 672 leds[i]->led_cdev.brightness_set_blocking = 673 blinkm_led_green_set; 674 err = led_classdev_register(&client->dev, 675 &leds[i]->led_cdev); 676 if (err < 0) { 677 dev_err(&client->dev, 678 "couldn't register LED %s\n", 679 leds[i]->led_cdev.name); 680 goto failgreen; 681 } 682 break; 683 case BLUE: 684 snprintf(blinkm_led_name, sizeof(blinkm_led_name), 685 "blinkm-%d-%d-blue", 686 client->adapter->nr, 687 client->addr); 688 leds[i]->led_cdev.name = blinkm_led_name; 689 leds[i]->led_cdev.brightness_set_blocking = 690 blinkm_led_blue_set; 691 err = led_classdev_register(&client->dev, 692 &leds[i]->led_cdev); 693 if (err < 0) { 694 dev_err(&client->dev, 695 "couldn't register LED %s\n", 696 leds[i]->led_cdev.name); 697 goto failblue; 698 } 699 break; 700 default: 701 break; 702 } /* end switch */ 703 } /* end for */ 704 } else { 705 /* Register multicolor sysfs class */ 706 /* The first element of leds is used for multicolor facilities */ 707 mc_led = &data->blinkm_leds[RED]; 708 mc_led->i2c_client = client; 709 710 mc_led_info[RED].color_index = LED_COLOR_ID_RED; 711 mc_led_info[GREEN].color_index = LED_COLOR_ID_GREEN; 712 mc_led_info[BLUE].color_index = LED_COLOR_ID_BLUE; 713 714 mc_led->mcled_cdev.subled_info = mc_led_info; 715 mc_led->mcled_cdev.num_colors = NUM_LEDS; 716 mc_led->mcled_cdev.led_cdev.brightness = 255; 717 mc_led->mcled_cdev.led_cdev.max_brightness = 255; 718 mc_led->mcled_cdev.led_cdev.flags = LED_CORE_SUSPENDRESUME; 719 720 snprintf(blinkm_led_name, sizeof(blinkm_led_name), > 721 "blinkm-%d-%d:rgb:indicator", 722 client->adapter->nr, 723 client->addr); 724 mc_led->mcled_cdev.led_cdev.name = blinkm_led_name; 725 mc_led->mcled_cdev.led_cdev.brightness_set_blocking = blinkm_set_mc_brightness; 726 727 err = led_classdev_multicolor_register(&client->dev, &mc_led->mcled_cdev); 728 if (err < 0) { 729 dev_err(&client->dev, "couldn't register LED %s\n", 730 mc_led->led_cdev.name); 731 goto failmulti; 732 } 733 } 734 735 blinkm_init_hw(client); 736 737 return 0; 738 739 failmulti: 740 led_classdev_unregister(&leds[BLUE]->led_cdev); 741 742 failblue: 743 led_classdev_unregister(&leds[GREEN]->led_cdev); 744 745 failgreen: 746 led_classdev_unregister(&leds[RED]->led_cdev); 747 748 failred: 749 sysfs_remove_group(&client->dev.kobj, &blinkm_group); 750 751 exit: 752 return err; 753 } 754 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki