From: Jeff LaBundy <jeff@labundy.com>
To: kernel test robot <lkp@intel.com>
Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org,
Dmitry Torokhov <dmitry.torokhov@gmail.com>
Subject: Re: drivers/input/misc/iqs626a.c:780:61: warning: '%d' directive output may be truncated writing between 1 and 10 bytes into a region of size 2
Date: Thu, 26 Oct 2023 10:50:55 -0500 [thread overview]
Message-ID: <ZTqK37deBniFVnWT@nixie71> (raw)
In-Reply-To: <202310190041.28bxUK0W-lkp@intel.com>
Perhaps the list can let me know if I am missing anything...
On Thu, Oct 19, 2023 at 12:34:52AM +0800, kernel test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: 06dc10eae55b5ceabfef287a7e5f16ceea204aa0
> commit: 4d3d2694e168c542b088eef5059d31498f679020 Input: iqs626a - drop unused device node references
> date: 9 months ago
> config: x86_64-randconfig-r015-20230901 (https://download.01.org/0day-ci/archive/20231019/202310190041.28bxUK0W-lkp@intel.com/config)
> compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231019/202310190041.28bxUK0W-lkp@intel.com/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@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202310190041.28bxUK0W-lkp@intel.com/
>
> All warnings (new ones prefixed by >>):
>
> drivers/input/misc/iqs626a.c: In function 'iqs626_parse_trackpad':
> >> drivers/input/misc/iqs626a.c:780:61: warning: '%d' directive output may be truncated writing between 1 and 10 bytes into a region of size 2 [-Wformat-truncation=]
> 780 | snprintf(tc_name, sizeof(tc_name), "channel-%d", i);
> | ^~
> drivers/input/misc/iqs626a.c:780:52: note: directive argument in the range [0, 2147483646]
> 780 | snprintf(tc_name, sizeof(tc_name), "channel-%d", i);
> | ^~~~~~~~~~~~
> drivers/input/misc/iqs626a.c:780:17: note: 'snprintf' output between 10 and 19 bytes into a destination of size 10
> 780 | snprintf(tc_name, sizeof(tc_name), "channel-%d", i);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This cannot actually happen during runtime; 'i' is limited to at most 8. The
warning seems bogus.
>
>
> vim +780 drivers/input/misc/iqs626a.c
>
> 712
> 713 static int iqs626_parse_trackpad(struct iqs626_private *iqs626,
> 714 struct fwnode_handle *ch_node,
> 715 enum iqs626_ch_id ch_id)
> 716 {
> 717 struct iqs626_sys_reg *sys_reg = &iqs626->sys_reg;
> 718 struct i2c_client *client = iqs626->client;
> 719 u8 *hyst = &sys_reg->tp_grp_reg.hyst;
> 720 int error, count, i;
> 721 unsigned int val;
> 722
> 723 if (!fwnode_property_read_u32(ch_node, "azoteq,lta-update", &val)) {
> 724 if (val > IQS626_MISC_A_TPx_LTA_UPDATE_MAX) {
> 725 dev_err(&client->dev,
> 726 "Invalid %s channel update rate: %u\n",
> 727 fwnode_get_name(ch_node), val);
> 728 return -EINVAL;
> 729 }
> 730
> 731 sys_reg->misc_a &= ~IQS626_MISC_A_TPx_LTA_UPDATE_MASK;
> 732 sys_reg->misc_a |= (val << IQS626_MISC_A_TPx_LTA_UPDATE_SHIFT);
> 733 }
> 734
> 735 if (!fwnode_property_read_u32(ch_node, "azoteq,filt-str-trackpad",
> 736 &val)) {
> 737 if (val > IQS626_FILT_STR_MAX) {
> 738 dev_err(&client->dev,
> 739 "Invalid %s channel filter strength: %u\n",
> 740 fwnode_get_name(ch_node), val);
> 741 return -EINVAL;
> 742 }
> 743
> 744 sys_reg->misc_b &= ~IQS626_MISC_B_FILT_STR_TPx;
> 745 sys_reg->misc_b |= val;
> 746 }
> 747
> 748 if (!fwnode_property_read_u32(ch_node, "azoteq,filt-str-np-cnt",
> 749 &val)) {
> 750 if (val > IQS626_FILT_STR_MAX) {
> 751 dev_err(&client->dev,
> 752 "Invalid %s channel filter strength: %u\n",
> 753 fwnode_get_name(ch_node), val);
> 754 return -EINVAL;
> 755 }
> 756
> 757 *hyst &= ~IQS626_FILT_STR_NP_TPx_MASK;
> 758 *hyst |= (val << IQS626_FILT_STR_NP_TPx_SHIFT);
> 759 }
> 760
> 761 if (!fwnode_property_read_u32(ch_node, "azoteq,filt-str-lp-cnt",
> 762 &val)) {
> 763 if (val > IQS626_FILT_STR_MAX) {
> 764 dev_err(&client->dev,
> 765 "Invalid %s channel filter strength: %u\n",
> 766 fwnode_get_name(ch_node), val);
> 767 return -EINVAL;
> 768 }
> 769
> 770 *hyst &= ~IQS626_FILT_STR_LP_TPx_MASK;
> 771 *hyst |= (val << IQS626_FILT_STR_LP_TPx_SHIFT);
> 772 }
> 773
> 774 for (i = 0; i < iqs626_channels[ch_id].num_ch; i++) {
> 775 u8 *ati_base = &sys_reg->tp_grp_reg.ch_reg_tp[i].ati_base;
> 776 u8 *thresh = &sys_reg->tp_grp_reg.ch_reg_tp[i].thresh;
> 777 struct fwnode_handle *tc_node;
> 778 char tc_name[10];
> 779
> > 780 snprintf(tc_name, sizeof(tc_name), "channel-%d", i);
> 781
> 782 tc_node = fwnode_get_named_child_node(ch_node, tc_name);
> 783 if (!tc_node)
> 784 continue;
> 785
> 786 if (!fwnode_property_read_u32(tc_node, "azoteq,ati-base",
> 787 &val)) {
> 788 if (val < IQS626_TPx_ATI_BASE_MIN ||
> 789 val > IQS626_TPx_ATI_BASE_MAX) {
> 790 dev_err(&client->dev,
> 791 "Invalid %s %s ATI base: %u\n",
> 792 fwnode_get_name(ch_node), tc_name, val);
> 793 fwnode_handle_put(tc_node);
> 794 return -EINVAL;
> 795 }
> 796
> 797 *ati_base = val - IQS626_TPx_ATI_BASE_MIN;
> 798 }
> 799
> 800 if (!fwnode_property_read_u32(tc_node, "azoteq,thresh",
> 801 &val)) {
> 802 if (val > IQS626_CHx_THRESH_MAX) {
> 803 dev_err(&client->dev,
> 804 "Invalid %s %s threshold: %u\n",
> 805 fwnode_get_name(ch_node), tc_name, val);
> 806 fwnode_handle_put(tc_node);
> 807 return -EINVAL;
> 808 }
> 809
> 810 *thresh = val;
> 811 }
> 812
> 813 fwnode_handle_put(tc_node);
> 814 }
> 815
> 816 if (!fwnode_property_present(ch_node, "linux,keycodes"))
> 817 return 0;
> 818
> 819 count = fwnode_property_count_u32(ch_node, "linux,keycodes");
> 820 if (count > IQS626_NUM_GESTURES) {
> 821 dev_err(&client->dev, "Too many keycodes present\n");
> 822 return -EINVAL;
> 823 } else if (count < 0) {
> 824 dev_err(&client->dev, "Failed to count keycodes: %d\n", count);
> 825 return count;
> 826 }
> 827
> 828 error = fwnode_property_read_u32_array(ch_node, "linux,keycodes",
> 829 iqs626->tp_code, count);
> 830 if (error) {
> 831 dev_err(&client->dev, "Failed to read keycodes: %d\n", error);
> 832 return error;
> 833 }
> 834
> 835 sys_reg->misc_b &= ~IQS626_MISC_B_TPx_SWIPE;
> 836 if (fwnode_property_present(ch_node, "azoteq,gesture-swipe"))
> 837 sys_reg->misc_b |= IQS626_MISC_B_TPx_SWIPE;
> 838
> 839 if (!fwnode_property_read_u32(ch_node, "azoteq,timeout-tap-ms",
> 840 &val)) {
> 841 if (val > IQS626_TIMEOUT_TAP_MS_MAX) {
> 842 dev_err(&client->dev,
> 843 "Invalid %s channel timeout: %u\n",
> 844 fwnode_get_name(ch_node), val);
> 845 return -EINVAL;
> 846 }
> 847
> 848 sys_reg->timeout_tap = val / 16;
> 849 }
> 850
> 851 if (!fwnode_property_read_u32(ch_node, "azoteq,timeout-swipe-ms",
> 852 &val)) {
> 853 if (val > IQS626_TIMEOUT_SWIPE_MS_MAX) {
> 854 dev_err(&client->dev,
> 855 "Invalid %s channel timeout: %u\n",
> 856 fwnode_get_name(ch_node), val);
> 857 return -EINVAL;
> 858 }
> 859
> 860 sys_reg->timeout_swipe = val / 16;
> 861 }
> 862
> 863 if (!fwnode_property_read_u32(ch_node, "azoteq,thresh-swipe",
> 864 &val)) {
> 865 if (val > IQS626_THRESH_SWIPE_MAX) {
> 866 dev_err(&client->dev,
> 867 "Invalid %s channel threshold: %u\n",
> 868 fwnode_get_name(ch_node), val);
> 869 return -EINVAL;
> 870 }
> 871
> 872 sys_reg->thresh_swipe = val;
> 873 }
> 874
> 875 sys_reg->event_mask &= ~IQS626_EVENT_MASK_GESTURE;
> 876
> 877 return 0;
> 878 }
> 879
>
> --
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki
Kind regards,
Jeff LaBundy
next prev parent reply other threads:[~2023-10-26 15:51 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-18 16:34 drivers/input/misc/iqs626a.c:780:61: warning: '%d' directive output may be truncated writing between 1 and 10 bytes into a region of size 2 kernel test robot
2023-10-26 15:50 ` Jeff LaBundy [this message]
-- strict thread matches above, loose matches on Subject: below --
2023-12-04 21:44 kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZTqK37deBniFVnWT@nixie71 \
--to=jeff@labundy.com \
--cc=dmitry.torokhov@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lkp@intel.com \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.